在php的系統函數中有一個checkdnsrr函數,該函數的作用是根據一個給定的host name(域名)或者IP地址檢查它是否有DNS記錄,目的就是檢驗它是否真實存在。但是該函數僅可以在linux系統下使用,並不支持windows平台。下面是網上搜集到的一個hack的方法,實現在window平台上模擬checkdnsrr函數來檢測一個email是否存在的功能!
if(!function_exists('checkdnsrr')){
function checkdnsrr($host,$type=''){
if(!empty($host)){
$type=(empty($type))?'MX':$type;
exec('nslookup -type='.$type.' '.escapeshellcmd($host),$result);
$it=new ArrayIterator($result);
foreach(new RegexIterator($it,'~^'.$host.'~',RegexIterator::GET_MATCH) as $result){
if($result){
return true;
}
}
}
return false;
}
}
接下來我來介紹一下該函數的參數:
bool checkdnsrr ( string $host [, string $type = "MX" ] )
第一個參數我們就不說了,就是域名或者ip
第二個參數是解析類型,分別有:
A (Address) 記錄 是指定主機名(或域名)對應的IP地址記錄。
MX 記錄 是指定郵件交換記錄(默認)
NS 記錄 是指定域名服務器的記錄,指定該域名由哪個DNS來進行解析。
SOA記錄 一般在輔助的dns服務器裡才用到,用來指定誰是主服務器。
PTR記錄 從ip指向域名的反向解析記錄
CNAME記錄 別名記錄
AAAA記錄 是一個指向IPv6的記錄
A6記錄 同上
SRV記錄 它是DNS服務器的數據庫中支持的一種資源記錄的類型,一般是為Microsoft的活動目錄設置時的應用。
TXT記錄 文本信息
ANY記錄 任何記錄,所有數據類型