在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记录 任何记录,所有数据类型