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
(PHP 4, PHP 5, PHP 7, PHP 8)
checkdnsrr — 檢查與給定網際網路主機名稱或 IP 位址對應的 DNS 記錄
hostname
hostname
可以是點分十進位表示法的 IP 位址或主機名稱。
type
type
可以是以下任何一種:A、MX、NS、SOA、PTR、CNAME、AAAA、A6、SRV、NAPTR、TXT 或 ANY。
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
重要警告
您需要在主機名稱的末尾添加一個點,才能使其成為完整的網域名稱 (FQDN)。
要了解原因,請嘗試執行以下程式碼片段
$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」存在。
我始終認為您應該陳述顯而易見的事情。
在沒有網路連線的情況下,包含 checkdnsrr 的函式將返回 false。
因此,在生產環境中,您需要有效的網際網路連線才能以有效的電子郵件地址返回 true 結果。