2012-02-08 42 views
3

我已經給出了這個代碼來測試,並驗證是否有效的電子郵件地址。我知道這是有效的,但在聖誕節期間再次贈送所有禮物的價格標籤已被刪除。如何讓checkdnsrr使用Spamhaus.org代替MX?

在我的情況下,說明已被刪除。我正按照我在該腳本中看到的「MX」告訴腳本使用MX驗證數據庫...我是否只是替換或添加它旁邊的「spamhaus.org」以使其工作?還是不止於此?

我不在Windows機器上作爲我的服務器,所以我不需要擔心checkdnsrr無法正常工作。

此外,有沒有更好的腳本版本?我很好奇,因爲不習慣這部分PHP編碼對我來說是新的。

在此先感謝。

// take a given email address and split it into the username and domain. 
list($userName, $mailDomain) = split("@", $email); 
if (checkdnsrr($mailDomain, "MX")) { 
 // this is a valid email domain! 
} 
else { 
 // this email domain doesn't exist! bad dog! no biscuit! 
} 

回答

5

http://php.net/manual/en/function.checkdnsrr.php爲checkdnsr支持的唯一方法是A,MX,NS,SOA,PTR,CNAME,AAAA,A6,SRV,NAPTR,TXT或ANY。您無法添加自定義網址。

嘗試:

$host = '64.53.200.156'; 

$rbl = 'sbl-xbl.spamhaus.org'; 
// valid query format is: 156.200.53.64.sbl-xbl.spamhaus.org 
$rev = array_reverse(explode('.', $host)); 

$lookup = implode('.', $rev) . '.' . $rbl; 

if ($lookup != gethostbyname($lookup)) { 
    echo "ip: $host is listed in $rbl\n"; 
} else { 
    echo "ip: $host NOT listed in $rbl\n"; 
} 
+0

主機是本地的我走了嗎?我只是問,因爲我使用的網絡提供商有一個IP或「本地主機」的字符串,因爲它的偏好...此外,我注意到$ rlb是不同於你發佈的鏈接的評論部分。這是由設計嗎? – 2012-02-09 11:56:07

+1

$ rbl是sbl-xbl.spamhaus.org,在代碼和註釋中都是相同的。您查詢的URL是您檢查的主機IP(反向)的串聯,因此在您的情況下,在@(做反向查找以獲得IP)和上面給出的RBL之後的域。 – 2012-02-09 12:04:53

+1

gethostbyname()將獲取您提供的任何主機名的IPv4地址。 – 2012-02-09 12:06:55