PHP Conference Japan 2024

checkdnsrr

(PHP 4、PHP 5、PHP 7、PHP 8)

checkdnsrr检查与给定互联网主机名或 IP 地址相对应的 DNS 记录

描述

checkdnsrr(字符串 $hostname, 字符串 $type = "MX"): 布尔值

在 DNS 中搜索与 hostname 相对应的类型为 type 的记录。

参数

hostname

hostname 可以是点分四段式表示法的 IP 地址,也可以是主机名。

type

type 可以是以下任何一种:A、MX、NS、SOA、PTR、CNAME、AAAA、A6、SRV、NAPTR、TXT 或 ANY。

返回值

如果找到任何记录,则返回 true;如果未找到任何记录或发生错误,则返回 false

备注

注意:

为了与在实现此功能之前的 Windows 版本兼容,请尝试使用 » PEAR» Net_DNS

参见

  • dns_get_record() - 获取与主机名关联的 DNS 资源记录
  • getmxrr() - 获取与给定互联网主机名相对应的 MX 记录
  • gethostbyaddr() - 获取与给定 IP 地址相对应的互联网主机名
  • gethostbyname() - 获取与给定互联网主机名相对应的 IPv4 地址
  • gethostbynamel() - 获取与给定互联网主机名相对应的一系列 IPv4 地址
  • named(8) 手册页

添加注释

用户贡献的注释 3 条注释

Krisztin Ferenczi
11 年前
criffoh at gmail dot com 是对的。在检查域名之前,必须使用 idn_to_ascii 函数转换为 ascii。
http://us2.php.net/manual/en/function.idn-to-ascii.php .

var_dump(checkdnsrr('ñandu.cl', 'A')); // 返回 false
var_dump(checkdnsrr(idn_to_ascii('ñandu.cl'), 'A')); // 返回 true
Martin
8 年前
重要警告

您需要在主机名末尾添加一个点以构成完整的合格域名。

要了解原因,请尝试执行以下代码段

$d1="gmail.con";
$d2="gmail.con.";
$r1=checkdnsrr($d1, "MX");
$r2=checkdnsrr($d2, "MX");
var_dump($r1);
var_dump($r2);

您将看到,如果没有点,它声称域名“gmail.con”有效。

请注意,如果您对“checkdnsrr()”调用计时,您还将看到它在没有点的情况下花费的时间更长,因为它将其视为相对域名并在其正在运行的主机名基础上进行多次尝试。

注意:如果您感兴趣,将被视为相对域名解释了正在发生的事情。如果您的主机是“example.com”,则相对域名最终将解析为“gmail.con.com.”,可以查找,因此它错误地声称“gmail.con”存在
n at zay dot uk
3 年前
我一直认为您应该说明显而易见的事情。
包含 checkdnsrr 的函数在没有互联网连接的情况下将返回 false。
因此,在生产环境中,您需要一个活动的互联网连接才能使用有效的电子邮件地址返回 true 结果。
To Top