我在PHP中尝试使用checkdnsrr()函数来测试给定的主机名是否有效.
以下是PHP代码:
$url = "this_is_a_wrong_url.com";
if (checkdnsrr($url, 'A'))
{
echo "Domain exists.";
}
else
{
echo "Domain doesnot exists.";
}
Run Code Online (Sandbox Code Playgroud)
但即使对于无效的url,它也会返回true.
我究竟做错了什么?我使用的是PHP 5.3.5
编辑:这个代码在具有相同PHP版本的Linux机器上运行良好.它仅在Windows机器上给出无效结果.
某些ISP会将无效域重定向到自己的搜索服务器.TimeWarner/RoadRunner就是这样一个ISP.您的代码工作正常,但您可能需要检查以确保它们不会解析到您的ISP的搜索服务器.首先使用gethostbyname检查无效域,然后使用该域进行检查.
if (checkdnsrr($url, 'A') && gethostbyname($url) != '204.232.137.207' && gethostbyname($url) !='66.152.109.110')
Run Code Online (Sandbox Code Playgroud)
或者更好的是
if(checkdnsrr($url,'A') && !in_array(gethostbyname($url),gethostbynamel('this_is_a_wrong_url.com')))
Run Code Online (Sandbox Code Playgroud)