我应该为注册/登录表单使用regex吗


Should I use regex for registration/login forms?

使用mysql_real_eescape_string和strip_tags输入用户名/密码是否足够,还是还应该包括regex?该网站使用了不推荐使用的MYSQL。

例如:

if (!preg_match( "/^['w-'.]+@(['w-]+'.)+['w-]{0,3}$/",$_POST['email'])) {
    $error = "Invalid email or password";

在将数据传递到MySQL之前验证电子邮件(输入)总是更好的,幸运的是,您不必使用regex进行电子邮件验证,PHP有内置的函数filter_var进行验证。这比regex验证快得多。

语法为:

if(! filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
    //Email not valid, 
    $error = "Invalid email or password";
}

使用RegEx,您可以验证用户名/密码的格式。您使用的正则表达式不可靠,例如它不匹配email@blablabla.info或任何超过3个字符的新TLD。

对于电子邮件,我使用这个:

/^[[:alnum:]|'.|'-|_]+@[[:alnum:]|'.|'-|_]+[A-Z]+$/i

请注意,对于密码,您必须根据要允许的字符编写不同的检查。