dns_get_record() 函数可以用来查询 DNS 记录。它的语法如下:

dns_get_record(string $hostname, int $type = DNS_ANY, array &$authns = null, array &$addtl = null, bool &$raw = false): array|false

该函数接受以下参数:

  • $hostname: 要查询的主机名。
  • $type: 可选参数,指定要查询的记录类型。默认为 DNS_ANY,表示查询所有记录类型。其他可选值包括 DNS_A (IPv4 地址记录), DNS_AAAA (IPv6 地址记录), DNS_CNAME (别名记录), DNS_MX (邮件交换记录), DNS_NS (域名服务器记录), DNS_PTR (反向 DNS 查询记录), DNS_SOA (域名授权记录),以及其他一些记录类型。
  • $authns: 可选参数,用来返回授权 DNS 服务器的信息。
  • $addtl: 可选参数,用来返回额外的 DNS 记录信息。
  • $raw: 可选参数,用来指定是否返回未解析的 DNS 记录。默认为 false

该函数返回一个由 DNS 记录组成的数组,每个记录都是一个关联数组,包含以下字段:

  • host: 记录的主机名。
  • class: 记录的类别。
  • ttl: 记录的生存时间。
  • type: 记录的类型。
  • ip: 记录的 IP 地址 (仅适用于 DNS_ADNS_AAAA 记录)。
  • target: 记录的目标主机名 (适用于 DNS_CNAME, DNS_MX, DNS_NS, DNS_PTR, DNS_SOA 记录)。
  • pri: 记录的优先级 (适用于 DNS_MX 记录)。
  • rname: 记录的负责人邮箱 (适用于 DNS_SOA 记录)。
  • serial: 记录的序号 (适用于 DNS_SOA 记录)。
  • refresh: 记录的刷新时间 (适用于 DNS_SOA 记录)。
  • retry: 记录的重试时间 (适用于 DNS_SOA 记录)。
  • expire: 记录的失效时间 (适用于 DNS_SOA 记录)。
  • minimum-ttl: 记录的最小生存时间 (适用于 DNS_SOA 记录)。

如果查询失败,则该函数返回 false

下面是一些示例:

// 查询 example.com 的 A 记录
$result = dns_get_record('example.com', DNS_A);
print_r($result);

// 查询 example.com 的 MX 记录
$result = dns_get_record('example.com', DNS_MX);
print_r($result);

// 查询 example.com 的 NS 记录
$result = dns_get_record('example.com', DNS_NS);
print_r($result);

// 查询 8.8.8.8 的 PTR 记录
$result = dns_get_record('8.8.8.8', DNS_PTR);
print_r($result);

注意,如果 $raw 参数设置为 true,则返回的记录可能包含未解析的数据,例如下面的示例:

$result = dns_get_record('example.com', DNS_A, $authns, $addtl, true);
print_r($result);

输出结果:

Array
(
    [0] => Array
        (
            [host] => example.com
            [class] => IN
            [ttl] => 3599
            [type] => A
            [ip] => 93.184.216.34
            [raw] => "\x06example\x03com\x00\x00\x01\x00\x01\x00\x00)\x10\x00\x00\x00\x00\x00\x00\x00"
        )

)

可以看到,$raw 参数返回了未解析的数据。

详细讲一下dns_get_record 的用法比如可以查询那些记录等

原文地址: https://www.cveoy.top/t/topic/B6r 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录