检查MX和FILTER_VALIDATE_IP以验证域之间的区别

时间:2016-07-08 08:47:18

标签: php validation if-statement dns

这两个PHP脚本验证了一个网站域,我只是想知道两者之间的区别。他们俩都做同样的事吗?是否比另一个更好用?

这是第一个:

if(!filter_var(gethostbyname($website), FILTER_VALIDATE_IP))
{
//returns false
}

这是第二个:

if (!checkdnsrr($website,"MX")) {
//returns false
}

他们似乎都做了同样的事情。

1 个答案:

答案 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。