这两个PHP脚本验证了一个网站域,我只是想知道两者之间的区别。他们俩都做同样的事吗?是否比另一个更好用?
这是第一个:
if(!filter_var(gethostbyname($website), FILTER_VALIDATE_IP))
{
//returns false
}
这是第二个:
if (!checkdnsrr($website,"MX")) {
//returns false
}
他们似乎都做了同样的事情。
答案 0 :(得分:1)
两种功能在操作方面都有所不同,即它们的作用
FILTER_VALIDATE_IP:
它只是检查给定数据是否采用适当的IPv4或IPv6格式,具体取决于您传递的标志,请检查here。
checkdnsrr:
其目的仅是在Web上获取相应IP OR主机名的实时DNS记录,而不是验证IP地址。检查here。
检查以下代码:
$website = 'www.apple.com';
echo 'GetHostName:'.gethostbyname($website).'<br>';
echo (!filter_var(gethostbyname($website), FILTER_VALIDATE_IP))?'FALSE by FILTER<br>':'TRUE by Filter<br>';
echo (!checkdnsrr($website,"MX"))?'FALSE by cDNS<br>':'TRUE By cDNS<Br>';
echo (!filter_var(gethostbyname('127.0.0.1'), FILTER_VALIDATE_IP))?'FALSE by FILTER<br>':'TRUE by Filter<br>';
echo (!checkdnsrr('127.0.0.1',"MX"))?'FALSE by cDNS<br>':'TRUE By cDNS<Br>';
输出:
GetHostName:23.15.152.48
TRUE by Filter
TRUE By cDNS
TRUE by Filter
FALSE by cDNS
结论:
要验证域,您应该使用 checkdnsrr()如果没有找到DNS记录,它将返回false。