越来越多的网站希望用户使用邮箱进行注册,或者是绑定邮箱,这时候就要对邮箱的正确性进行确认,有的人采用发送邮件进行激活的方式来进行判断,从而激活一个账户,但是存在一个问题就是,在邮件发送出去之前,用户的基本信息已经存在于数据库中了,如果是个错误的邮箱或者是恶意多注册账户,那就会造成非活动账号太多,占用数据库存储空间,这边就需要在之前就进行这些邮箱的过滤,因此作者写下下面的一个方法用来过滤邮箱。
/**
* @todo 用户输入安全性检测
* @param $inputString 用户输入信息
* @return true/false
* @final 可以根据自己的需求进行过滤内容的变换
*/
public function checkUserInput($inputString){
if (strpos(\'script\', $inputString)!=false){//检测是否含有script脚本
return FALSE;
}else if (strpos(\'iframe\', $inputString)!=false){//检测是否含有iframe框架
return FALSE;
}else {
return TRUE;
}
}
/**
* @todo checkeemail
* @param emailString
* @return false/true
*/
public function checkEmail($emailString){
if ($this -> checkUserInput($emailString) === TRUE){//检测是否含有敏感词汇
if (strpos(\'@\', $emailString) != FALSE){//检测是否存在@字符
$emailArr = explode(\'@\', $emailString);
if (count($emailArr) > 2){//检测是否存在多个@字符
return FALSE;
}else{
if (in_array(\'@\'.$emailArr[1], Yii::app() -> params[\'mail_suffix\'])){//检测后缀是否满足日常常用邮箱后缀
return TRUE;
}else{
return FALSE;
}
}
}else{
return FALSE;
}
}else{
return FALSE;
}
}
其中我定义了一个常用邮箱的后缀的数组,具体如下:
//常用邮箱后缀,根据具体需求可以再增加
\'mail_suffix\'=>array(\'@hotmail.com\',
\'@msn.com\',
\'@yahoo.com\',
\'@gmail.com\',
\'@aim.com\',
\'@aol.com\',
\'@mail.com\',
\'@walla.com\',
\'@inbox.com\',
\'@126.com\',
\'@163.com\',
\'@sina.com\',
\'@21cn.com\',
\'@sohu.com\',
\'@yahoo.com.cn\',
\'@tom.com\',
\'@qq.com\',
\'@etang.com\',
\'@eyou.com\',
\'@56.com\',
\'@x.cn\',
\'@chinaren.com\',
\'@sogou.com\',
\'@citiz.com\',
),
到此邮箱的过滤方法就完成了,大家可以在此基础上进行进一步的完善!