PHP获取dns解析记录

鸿辰 PHP 3.36 K
  • 说明

    在有些场景下做PHP开发时,需要获取到域名的dns解析记录,如通过CNAME解析记录实现自定义域名,通过TXT解析记录实现域名鉴权,确认是域名所有者在操作。在PHP中,已经提供了dns_get_record函数来获取dns的解析记录情况

  • 函数

    PHP获取dns解析记录-第1张图片-鸿辰个人分享站
    官方文档中,对该函数做了详细的说明,这里主要说明一下type参数
    PHP获取dns解析记录-第2张图片-鸿辰个人分享站
    从上图中看出,可以指定获取dns的记录类型,下面做简单的测试

  • 测试

    • 获取www.sunyonghong.cnCNAME解析值的PHP代码如下:

      $result = dns_get_record('www.sunyonghong.cn',DNS_CNAME);
      print_r($result);

      执行后得到如下结果:

      Array
      (
        [0] => Array
            (
                [host] => www.sunyonghong.cn
                [class] => IN
                [ttl] => 60
                [type] => CNAME
                [target] => www.sunyonghong.com
            )
      
      )

      可以看到返回的数据中,存在typetarget字段,分别对应的是解析类型记录值,这里表示将www.sunyonghong.cn使用cname解析到了www.sunyonghong.com

    • 获取txt解析记录值
      之前在 nginx配置https 时,申请了免费证书,做了一个txt解析,这里可以通过PHP获取查看记录值,PHP代码如下

      $result = dns_get_record('_dnsauth.sunyonghong.com',DNS_TXT);
      print_r($result);

      执行后得到如下结果:

      Array
      (
        [0] => Array
            (
                [host] => _dnsauth.sunyonghong.com
                [class] => IN
                [ttl] => 60
                [type] => TXT
                [txt] => 2021011300000056uczf4bzxp9icirm19kkhbk8i3jp4ugyami6m7fiueuk393sv
                [entries] => Array
                    (
                        [0] => 2021011300000056uczf4bzxp9icirm19kkhbk8i3jp4ugyami6m7fiueuk393sv
                    )
      
            )
      
      )

      可以看到返回数据中,将txt解析记录值返回了,可以利用此方式,来验证域名所有者是否合法。

此函数还可以获得更多的dns数据,可以自行进行测试。

标签: dns php