PHP dns_get_record 函数
最后修改于 2025 年 4 月 4 日
PHP dns_get_record
函数用于检索给定主机的 DNS 记录。它提供详细的 DNS 信息以供分析和验证。
基本定义
dns_get_record
获取与主机关联的 DNS 资源记录。它可以检索各种记录类型,如 A、MX、CNAME、TXT 等。
语法:dns_get_record(string $hostname, int $type = DNS_ANY, array &$authns = null, array &$addtl = null, bool $raw = false): array|false
。成功返回记录数组,失败返回 false。
检索所有 DNS 记录
此示例显示如何获取域的所有 DNS 记录。
<?php declare(strict_types=1); $domain = "example.com"; $records = dns_get_record($domain); echo "DNS records for $domain:\n"; print_r($records);
这将获取域的所有可用 DNS 记录。结果是一个包含所有记录类型的数组。每条记录都有特定于类型的字段。
获取特定记录类型
这演示了仅为域检索 MX(邮件交换)记录。
<?php declare(strict_types=1); $domain = "example.com"; $mx_records = dns_get_record($domain, DNS_MX); echo "MX records for $domain:\n"; foreach ($mx_records as $record) { echo "Priority: {$record['pri']}, Target: {$record['target']}\n"; }
MX 记录指定域的邮件服务器。此示例从每条 MX 记录中提取优先级和目标服务器。这对于电子邮件配置检查很有用。
检查 TXT 记录
此示例检索 TXT 记录,这些记录通常用于验证和 SPF。
<?php declare(strict_types=1); $domain = "example.com"; $txt_records = dns_get_record($domain, DNS_TXT); echo "TXT records for $domain:\n"; foreach ($txt_records as $record) { echo "TXT: {$record['txt']}\n"; }
TXT 记录包含任意文本数据。通常用于域名验证、SPF 记录和 DKIM 配置。此示例提取所有 TXT 条目。
获取 A 和 AAAA 记录
这显示了如何检索 IPv4 (A) 和 IPv6 (AAAA) 地址记录。
<?php declare(strict_types=1); $host = "www.example.com"; $ip_records = dns_get_record($host, DNS_A + DNS_AAAA); echo "IP records for $host:\n"; foreach ($ip_records as $record) { $ip = $record['type'] == 'A' ? $record['ip'] : $record['ipv6']; echo "{$record['type']}: $ip\n"; }
A 记录包含 IPv4 地址,AAAA 包含 IPv6 地址。此示例合并了这两种类型以获取与主机名关联的所有 IP 地址。这对于连接性测试很有用。
高级 DNS 分析
此示例使用权威名称服务器执行全面的 DNS 分析。
<?php declare(strict_types=1); $domain = "example.com"; $authns = []; $addtl = []; $records = dns_get_record($domain, DNS_ALL, $authns, $addtl); echo "Primary records:\n"; print_r($records); echo "\nAuthoritative nameservers:\n"; print_r($authns); echo "\nAdditional records:\n"; print_r($addtl);
这将检索所有记录以及权威名称服务器信息。$authns
参数返回 NS 记录。$addtl
包含其他相关记录。这对于深入的 DNS 故障排除很有用。
最佳实践
- 错误处理:始终检查 false 返回值
- 缓存: 缓存结果以避免重复的 DNS 查询
- 超时:注意潜在的 DNS 查询超时
- 记录验证:验证结果中是否存在必需的字段
- 安全:净化输入以防止 DNS 欺骗
来源
本教程通过在各种场景下检索和分析 DNS 记录的实际示例,介绍了 PHP dns_get_record
函数。
作者
列出 所有 PHP 网络函数。