Php checkdnsrr始终返回True
我正在尝试为我正在构建的服务执行一些DNS ping 服务之一是检查CNAME和/或a记录中传递的URL,并返回布尔值 虽然它对于有效的URL和无效的(是的,我已经检查过了)都很有效,但它仍然返回TRUE 代码Php checkdnsrr始终返回True,php,dns,Php,Dns,我正在尝试为我正在构建的服务执行一些DNS ping 服务之一是检查CNAME和/或a记录中传递的URL,并返回布尔值 虽然它对于有效的URL和无效的(是的,我已经检查过了)都很有效,但它仍然返回TRUE 代码 bool(真) 从测试返回DodnCheck('http://www.sadfsdffoijoiuyiuoinsdf.com');此行错误: 您使用了错误的变量$URL,逻辑是反向的。它应该是:您正在将$Address传递给GetHost(),但您正在使用且未定义$URL。也许不是问题,
bool(真)
从测试返回DodnCheck('http://www.sadfsdffoijoiuyiuoinsdf.com');代码>此行错误:
您使用了错误的变量$URL
,逻辑是反向的。它应该是:您正在将$Address
传递给GetHost()
,但您正在使用且未定义$URL
。也许不是问题,但仍然是。看起来你的ISP有一个DNS代理,它将所有失败的查找重定向到搜索引擎。这些地址转到search.charter.net。你可以随时禁用它。我是猴子的叔叔。一旦其他用户也使用此服务,我是否会遇到此问题?你能更新你的答案吗。。。
// Check DNS records
private function DoDNSCheck($url){
$url = $this->GetHost($url);
echo '<pre>';
$tr = dns_get_record($url, DNS_A + DNS_CNAME);
print_r($tr);
echo '</pre>';
return (bool)(checkdnsrr($url, "CNAME") || checkdnsrr($url, "A"));
}
private function GetHost($url){
try{
$parseUrl = parse_url(trim($url));
return trim($parseUrl['host']);
} catch(Exception $e) {
var_dump($e->getMessage());
}
}
Array
(
[0] => Array
(
[host] => www.sadfsdffoijoiuyiuoinsdf.com
[class] => IN
[ttl] => 10
[type] => A
[ip] => 69.16.143.25
)
[1] => Array
(
[host] => www.sadfsdffoijoiuyiuoinsdf.com
[class] => IN
[ttl] => 10
[type] => A
[ip] => 198.105.251.24
)
)
$Address = ((strpos($URL, "http://") !== false) || (strpos($URL, "https://") !== false)) ? 'http://' . $Address : $Address;