+ -
当前位置:首页 → 问答吧 → 第三题 (不用正则)

第三题 (不用正则)

时间:2008-10-08

来源:互联网

[php]
/**
* 功能: 按要求验证邮箱地址
* $mail: 邮箱地址
* return: true | false
* 注: isset_mail()为另外检测是否是已注册过邮箱的函数
*/
function checkEmail($mail)
{
    $mail = trim($mail);
    $sname_arr = array('sina','263','126','163','QQ'); //受限邮箱服务商名称
    $n1 = strpos($mail, '@');
    $n2 = strpos($mail, '.');
    $sname = substr($mail, $n1+1, $n2-$n1-1); //邮箱服务商名称
    if(in_array($sname, $sname_arr)) return false; //不能使用sina、263、126、163、QQ的邮箱
    if(isset_mail($mail)) return false; //一个邮箱不能注册多个用户
    if(is_numeric(substr($mail, 0, $n1))) return false; //邮箱用户名不能全为数字
    if(is_numeric($sname)) return false; //邮箱服务器名不能为纯数字

    //判断邮箱格式是否正确(题目似乎没有做这个要求,先注释掉咯)
    //if(!ereg("^[a-zA-Z0-9]+@[a-zA-Z0-9]+\.[a-zA-Z]+$", $mail)) return false;
    return true;
}
[/php]

对此题题目有点疑问,见此:http://www.phpchina.com/bbs/viewthread.php?tid=82543&page=3#pid636177

作者: linvo   发布时间: 2008-10-08

已经进行答复了,感谢楼主的细心。

作者: PHPChina   发布时间: 2008-10-09

有漏洞~~~~

if(is_numeric(substr($mail, 0, $n1))) return false; //邮箱用户名不能全为数字

如果是[email protected],那也可以通过,因为1.1也是数字~~

作者: 飞翔de希望   发布时间: 2008-10-12

[email protected] 不符合邮箱规则吧?
注册邮箱的时候用户名可以有“.”吗?

也可以开打正则进行格式验证

作者: linvo   发布时间: 2008-10-12

[email protected] 不符合邮箱规则吧?
注册邮箱的时候用户名可以有“.”吗?

也可以开打正则进行格式验证
linvo 发表于 2008-10-12 12:24
其他邮箱不清楚,但是网易邮箱是允许用户名有"."的

作者: lemd   发布时间: 2009-11-02