ZetCode

PHP dns_check_record 函数

最后修改于 2025 年 4 月 4 日

PHP 的 dns_check_record 函数用于检查给定主机的 DNS 记录。它是 checkdnsrr 的别名,功能完全相同。

基本定义

dns_check_record 验证指定主机是否存在 DNS 记录。它可以检查多种记录类型,如 MX、A、CNAME 等。

语法:dns_check_record(string $host, string $type = "MX"): bool。如果存在匹配的记录,则返回 true,否则返回 false。需要 DNS 访问权限。

基本的电子邮件域名验证

此示例检查域名是否具有用于电子邮件验证的 MX 记录。

email_validation.php
<?php

declare(strict_types=1);

$domain = "example.com";
if (dns_check_record($domain, "MX")) {
    echo "Domain $domain has valid MX records";
} else {
    echo "Domain $domain has no MX records";
}

此检查通过验证 MX 记录来确认域名是否可以接收电子邮件。MX 记录对于正确的电子邮件服务器通信至关重要。

检查 A 记录

此示例演示了检查 A 记录以验证域名的 IP 解析。

a_record_check.php
<?php

declare(strict_types=1);

$host = "www.example.com";
if (dns_check_record($host, "A")) {
    echo "$host resolves to an IP address";
} else {
    echo "$host doesn't resolve to an IP";
}

A 记录将主机名映射到 IP 地址。此检查确认域名具有用于 Web 托管的正确 DNS 配置。

检查多种记录类型

此示例检查多种 DNS 记录类型以进行全面验证。

multi_record_check.php
<?php

declare(strict_types=1);

$domain = "example.com";
$checks = ["A", "MX", "TXT"];

foreach ($checks as $type) {
    $result = dns_check_record($domain, $type) ? "exists" : "missing";
    echo "$type record: $result\n";
}

通过验证多种记录类型,此项提供了完整的 DNS 健康检查。不同的记录类型在域名配置中具有不同的用途。

电子邮件验证函数

这展示了一个使用 dns_check_record 的完整电子邮件验证函数。

email_validator.php
<?php

declare(strict_types=1);

function validateEmailDomain($email) {

    $parts = explode('@', $email);
    if (count($parts) != 2) return false;
    
    $domain = $parts[1];
    return dns_check_record($domain, "MX");
}

$email = "user@example.com";
echo validateEmailDomain($email) ? "Valid" : "Invalid";

此函数拆分电子邮件以提取域名,然后检查 MX 记录。 这比简单的格式验证更可靠。

检查 CNAME 记录

此示例验证主机名是否已配置 CNAME(别名)记录。

cname_check.php
<?php

declare(strict_types=1);

$host = "blog.example.com";
if (dns_check_record($host, "CNAME")) {
    echo "$host is an alias (CNAME)";
} else {
    echo "$host is not a CNAME record";
}

CNAME 记录创建指向其他域名名的别名。此检查有助于识别主机名是否配置为别名。

最佳实践

来源

PHP dns_check_record 文档

本教程通过各种场景下的 DNS 记录验证的实际示例,介绍了 PHP dns_check_record 函数。

作者

我叫 Jan Bodnar,是一名充满热情的程序员,拥有丰富的编程经验。我自 2007 年以来一直在撰写编程文章。迄今为止,我已撰写了 1400 多篇文章和 8 本电子书。我在教授编程方面拥有十多年的经验。

列出 所有 PHP 网络函数