所以我试图让用户验证他们拥有域名。所以我生成了一个文件,让它们上传到他们的网站。所以我必须验证它,所以我做的是
file_get_contents($url.'/'.$token.'.html');
所有这一切都是
bool(false)
以下是更多代码
$url = $_POST['url'];
//Get site info
$gin = $con->prepare("SELECT * FROM verify WHERE url = :url");
$gin->bindValue(':url', $url);
$gin->execute();
//Get token
$t = $gin->fetch(PDO::FETCH_ASSOC);
$token = $t['token'];
$url = $t['url'];
//Get content
var_dump(file_get_contents($url.'/'.$token.'.html'));
我在表token
中有3列,这是文件中的字符串。 url
显然是网址,其格式为example.com
。并且经过验证的列可以是1
或0
。有任何想法吗?
答案 0 :(得分:2)
根据我从超过100万个域名中获取第三方内容的经验,我不建议您使用file_get_contents()
,因为此PHP函数无法处理页面重定向,需要有效用户代理的网站您遇到的问题可能仅限于某些域名。解决问题的更好方法是使用curl。
function download_content($url) {
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_USERAGENT, "Firefox 32.0");
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
<强>用法:强>
$returned_content = download_content('http://stackoverflow.com');
答案 1 :(得分:0)
如果您启用error_reporting(E_ALL)
,则可能会发现由于ini setting而不允许使用HTTP网址。
警告:您可能通过允许file_get_contents
中的任意前缀打开一个洞。尝试使用parse_url
来验证您确实拥有HTTP URL。那么您应该考虑使用cURL并禁用外部重定向(否则可以传递http://bit.ly/something#
之类的URL并仍然通过测试。)
答案 2 :(得分:0)
尝试在$ url之前添加http://并添加有效的网址。它会起作用
var_dump(file_get_contents('http://'.$url.'/'.$token.'.html')); // With a valid URL