【发布时间】:2015-05-24 09:00:40
【问题描述】:
我有一个基本形式的页面:
<form action="r.php" method="post">
<span>
<input type="text" placeholder="Notch" id="minime_url_textbox" name="u">
<label class="btn1 btn2 btn-2 btn-2g"> <input name="submit" type="submit" id="submit" value="Resolve"> </label>
<div class="clearfix"> </div>
</span>
</form>
当他们在输入框中输入用户名时按回车,他们会重定向到一个 r.php,它有一个包含()的 php 文件,其中包含:
<?php
//Urls to scrape from.
$user = isset($_GET['u']) ? $_GET['u'] : 'safetrbgds';
$URLs = array();
$URLs[] = 'http://namemc.com/u/'.$user;
$working = '';
//Curl scraper.
foreach($URLs as $URL){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $URL);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$page = curl_exec($ch);
$text = strip_tags($page);
$accounts = array();
preg_match_all('/(\w+) \s+ is \s+ available/x',$text,$accounts);
foreach($accounts[0] as $account){
$working .= ''.$account.''. PHP_EOL . '';
}
}
//Put the scraped proxies into the new .txt file.
file_put_contents('accounts.txt', $working, FILE_APPEND);
?>
它确实适用于 $user = isset($_GET['u']) 吗? $_GET['u'] : 'safetrbgds'; 对于 safetrbgds,但不适用于用户实际输入的内容。
我试过了:
$URLs[] = 'http://namemc.com/u/{$_POST["username"];}';
我只需要它来结束渲染,例如: $URLs[] = 'http://namemc.com/u/test';
【问题讨论】:
-
PS 我不希望 url 是 namemc.com/u/user=test 我必须得到它作为 namemc.com/u/test
-
您使用 POST 方法,但在 r.php 中您尝试获取 $_GET['u']。将第 3 行更改为: $user = isset($_POST['u']) ? $_POST['u'] : 'safetrbgds';
-
忘了说 r.php 不直接包含 PHP。它在页面上通过执行 Include() 所以我猜你的意思是 php.php 文件。
-
还是不行
-
@pr0metheus 是对的,你必须使用
$_POST,或者将表格更改为使用method="get"。如果用户在名称周围添加空格,请使用trim($user)。