今天给大家分享的内容是关于PHP怎么判断邮箱是否有效的方法代码,有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。
/**
* 验证邮件是否为有效邮件
* $email 邮箱
*/
public static function validate_email($email){
$email = explode("@",$email);
$email = array_pop($email);
if(checkdnsrr($email,"MX")){
return true;
}else{
return false;
}
}
}
实现思路:
1、把传递的邮箱使用explode根据@转换成数组。
2、使用array_pop去除掉最后面一个数组元素
3、使用checkdnsrr 检查指定网址的 DNS 记录是否存在,即可返回是否有效。
PHP下的checkdnsrr函数 -- 可以根据所给定的host name(域名)或者IP地址检查它是否有DNS各项记录(包括A记录、MX记录、NS记录、CNAME、PTR记录、AAAA记录、SRV记录、TXT记录、SOA记录等等),本函数用来检查 DNS 的字段纪录。指定的参数 host 可以是网络位址 (IP Address),也可以用机器名称 (Domain Name)。参数 type 可以省略,内定值为 MX。而参数 type 的值可为以下的其中之一:A、MX、NS、SOA、PTR、CNAME 或 ANY。若找到了指定网址的 DNS 字段,返回 true;若未找到指定的 DNS 字段或是有错误均会返回 false。这里不是返回实际的DNS记录值而是返回一个是否存在的状态。如果需要返回实际值需要用到dns_get_record()
主要可以用来检测一个输入的域名的真实性,以及用于网站验证用户输入的邮箱是否真实存在(有没有MX记录),当然也可以开发成查询平台,供用户查询各个域名的各项DNS记录情况;
用法:
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记录 任何记录,所有数据类型
发表评论 取消回复