PHP利用checkdnsrr函数来验证邮件地址是否有效

主要是为了网站防止恶意注册,提交的邮件地址是否有效

介绍checkdnsrr函数

  • 说明:

  1. bool checkdnsrr ( string $host [, string $type = "MX" ] )

  2. 根据不同记录(type)类型查询主机(host)相应的DNS记录。

  • 参数:

  1. host
    主机(host)可以是一个IP地址也可以是域名。

  2. type
    解析记录类型(type)可能是下面这些类型中的任何一个:A,MX,NS,SOA,PTR,CNAME,AAAA,A6, SRV,NAPTR,TXT 或者 ANY。

  • 返回值:

  1. 如果记录能找到,就返回TRUE;如果查找不到该DNS记录或者发生了错误,就返回FALSE

更多请参考PHP官方文档:checkdnsrr函数

以下是函数及使用方法:

<?php
function validate_email($email){

    $exp = "^[a-z\'0-9]+([._-][a-z\'0-9]+)*@([a-z0-9]+([._-][a-z0-9]+))+$";

    if(eregi($exp,$email)){

        if(checkdnsrr(array_pop(explode("@",$email)),"MX")){//通过查询DNS查询该域名的TXT记录,如果存在这值,则说明该邮箱地址输入正确,反之错误
            return true;
        }else{
            return false;
        }

    }else{

        return false;

    }    
}

$email='chenwenzhou@aliyun.com';//需要验证的邮箱地址
if(validate_email($email)){//使用自定义的函数 validate_email 进行判断,如果为true
    echo '该邮箱地址正确';
}else{//则
    echo '该邮箱地址不正确';
}

总结:

主要是利用这个 checkdnsrr 函数,从邮箱中提取域名,通过查询DNS查询该域名的TXT记录,如果存在这值,则说明该邮箱地址输入正确,反之错误


如无特别声明,该文章均为 现在网NowTime.cc)原创,转载请遵循 署名-非商业性使用 4.0 国际(CC BY-NC 4.0) 协议,即转载请注明文章来源。


标签: PHP

赞 (0)
此文章共有条评论, 人参与 |Powerd By Angboo