Php 为什么curl说所有使用http的网站都可用?
我正在使用Php 为什么curl说所有使用http的网站都可用?,php,http,curl,Php,Http,Curl,我正在使用cURL脚本检查网站是否可用 但它不能正常工作;根据它的说法,所有具有http://的URL都是可用的。为什么会这样 这是我的密码: function isDomainAvailible($domain) { //check, if a valid url is provided if(!filter_var($domain, FILTER_VALIDATE_URL)) { return false; } //initializ
cURL
脚本检查网站是否可用
但它不能正常工作;根据它的说法,所有具有http://的URL都是可用的。为什么会这样
这是我的密码:
function isDomainAvailible($domain)
{
//check, if a valid url is provided
if(!filter_var($domain, FILTER_VALIDATE_URL))
{
return false;
}
//initialize curl
$curlInit = curl_init($domain);
curl_setopt($curlInit,CURLOPT_CONNECTTIMEOUT,10);
curl_setopt($curlInit,CURLOPT_HEADER,true);
curl_setopt($curlInit,CURLOPT_NOBODY,true);
curl_setopt($curlInit,CURLOPT_RETURNTRANSFER,true);
//get answer
$response = curl_exec($curlInit);
curl_close($curlInit);
if ($response) return true;
return false;
}
谢谢大家! 尝试使用
curl\u getinfo()
获取curl exec信息
//get answer
$response = curl_exec($curlInit);
echo '<pre>';
print_r($response);
print_r(curl_getinfo($curlInit));
$info = curl_getinfo($curlInit);
if ($info['http_code'] == '200')
return true;
else
retrun 'Curl error: ' . curl_error($curlInit);
域也必须类似:-(使用http://)
如果您指定的URL没有protocol://前缀,curl将尝试猜测您可能需要的协议。然后它将默认为HTTP,但尝试基于常用主机名前缀的其他协议。例如,对于以“ftp”开头的主机名,curl将假定您想说ftp。
内容如下:
要了解更多信息,请阅读手册:-从代码判断,您可能是在一个透明的web代理之后,或者由一个非标准名称服务器提供服务 透明代理将代表您发出请求并返回其响应。如果是这样的话,在不存在位置的情况下,它似乎仍然会返回200状态码 非标准名称服务器可能返回承载自定义登录页的web服务器的IP地址(请考虑“销售域”),而不是返回查找错误 通过设置适当的选项,可以请求cURL提供更多调试信息:
最后,检查返回的主体以查看返回的内容。从这里可以明显看出以上哪种情况适用于这里。进行
var\u转储($response)通过curl\u exec()
调用分配代码后,在该行上单击code>。您还可以使用curl\u error()
进行进一步调试。您有什么响应,您的域是什么?您能给出一个实际错误的参数/结果的示例吗?使用http://的任何内容都是正确的,即使这样:您的http://www.xsgjlcdgjklxsdgjksdflk.com/
example使用您提供的代码为我返回false
。我给出检查建议好的,您是对的,这只适合我。但是我怎么能修好它呢?我不希望像我这样设置了网络的网站用户能够破坏我的网站。没有人可以通过更改DNS配置来破坏你的网站,但你肯定应该考虑修复你自己的设置:)请与你的托管提供商联系。问题是,cURL会检查用户输入的url是否有效,并将其输入数据库(如果是)。如果对他们来说这是正确的,那么这会使他们在数据库中输入错误的条目吗?此外,我无法更改我的网络设置-我认为这是我的大学wifi。@SimonH无论是哪种情况,你都应该向你的主机提供商查询,以了解上述哪种说法是正确的,以及他们如何修复它。@SimonH,等等,你正在使用学校wifi网络运行服务器?
curl_setopt($curlInit, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curlInit, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_VERBOSE, 1);