使用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
请注意,对于密码,您必须根据要允许的字符编写不同的检查。