使用php进行域和子域验证

时间:2014-05-21 13:15:29

标签: php

$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!";
    }

如果我插入此代码,它即将发布,域名未找到。 有人有解决方案??

1 个答案:

答案 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)以验证域/子域是否有效。这取决于你如何处理这些不同的场景...