$domain= "stackexchange.com";
if (checkdnsrr($domain,"MX")){
echo "yup! " . $domain ." is valid domain";
}
else{
echo "nope " . $domain ." invalid domain!";
}
我使用此代码检查输入的域是否有效。它的工作 但当我在其中提供子域时,它表示未找到域
$domain= "wordpress.stackexchange.com";
if (checkdnsrr($domain,"MX")){
echo "yup! " . $domain ." is valid domain";
}
else{
echo "nope " . $domain ." invalid domain!";
}
如果我插入此代码,它即将发布,域名未找到。 有人有解决方案??
答案 0 :(得分:2)
正如用户Linus指出的那样,子域不一定有MX
条记录。更好地检查A
记录。
即便如此,域名可能具有有效的DNS记录,但该站点可能尚未存活。
检查网站是否还活着的更好方法是使用fsockopen()功能。
例如:
function isValidSite($url, $port = 80, $timeout = 1) {
$isValid = false;
$check = @fsockopen($url, $port, $errno, $errstr, $timeout);
if ($check) {
$isValid = true;
@fclose($check);
}
return $isValid;
}
var_dump(isValidSite('test.stackexchange.com')); // returns 'true'
即便如此......这可能不是一个有效的测试。当您尝试访问不存在的子域时,某些Web服务器将实现捕获所有规则以重定向到404页面或显示警告。
另一种选择是发出CURL GET
请求并使其仅返回标头,并检查响应标头代码是否为200(HTTP OK)以验证域/子域是否有效。这取决于你如何处理这些不同的场景...