在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記錄 任何記錄,所有數據類型