我正在尝试为我正在构建的服务执行一些DNS ping。
其中一项服务是检查传递的URL的CNAME& /或A记录,并返回布尔值
虽然它似乎适用于有效的URL,但对于无效(并且我已经检查过),它仍然返回TRUE
// 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());
}
}
我做错了什么?
P.S。我的服务器DNS设置是从我的路由器中检索的,该路由器使用我的ISP的DNS服务器。即使我尝试使用Google和OpenDNS
,这个问题仍然会发生我甚至从dns_get_record
支票
通过上述功能,我得到了:
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
)
)
bool(true)
从测试DoDNSCheck('http://www.sadfsdffoijoiuyiuoinsdf.com');
答案 0 :(得分:0)
这一行错了:
$Address = ((strpos($URL, "http://") !== false) || (strpos($URL, "https://") !== false)) ? 'http://' . $Address : $Address;
您使用的是错误的变量$URL
,逻辑是向后的。它应该是: