2016-03-01 69 views
0

我有以下代码来检查用户输入是否是一个有效的电子邮件,可能有几个问题已经关于此,但没有人似乎验证PHP函数。验证电子邮件使用PHP的问题

/* check if valid email*/ 
public function isValidEmail($email){ 
    if(filter_var($email, FILTER_VALIDATE_EMAIL)) { 
     return true; 
    } 
    return false; 
} 

如果我们使用此功能测试:

isValidEmail('[email protected]') 

这应返回false因为像?=字符的电子邮件地址中。有没有更严格的方式来检查电子邮件?

+0

通过“什么都不写” - 你的意思是它返回真正的测试输入? – Epodax

+0

您将变量作为'$ epost'传递给函数,然后以'$ email'的形式访问它 - 这不会检查传入的变量。 – Luke

+0

拼写错误,问题更新, – sdfgg45

回答

2

这里的问题是,?=是完全有效的电子邮件地址。从Wikipedia on the RFC controlling email addresses

的电子邮件地址的本地部分可以使用这些ASCII字符:
这些特殊字符:!#$%&“* + -/=^_`{|}〜( ASCII:33,35-39,42,43,45,47,61,63,94-96,123-126)

如果你想确保电子邮件地址确实存在,只是意识到那条路是very difficult