在PHP中有用户输入验证的短手吗?

Tat*_*tat 0 php validation

例如,我有一个注册功能,需要用户输入他们的"用户名","电子邮件地址"和"密码".

我需要检查用户的所有参数,这不是null,而且,我需要检查它们的输入长度是否足以存储在db中.此外,我需要检查数据库中是否有任何重复的用户名和电子邮件.此外,我需要检查电子邮件地址是否是有效的电子邮件格式.

只创建一个足够简单的寄存器功能,我需要做很多检查.是否有任何简短的手检查一些基本的东西?例如,这不是为了提高生产率.

ale*_*lex 5

你需要检查它,因为它无法检查自己.

PHP有许多有用的功能来帮助...

isset()

isset()确保设置GET/POST变量.这些缺失通常只是由人们修修补补造成的.

if ( ! isset($_POST['email'])) {
   $this->addError('You did not supply your email');
}
Run Code Online (Sandbox Code Playgroud)

trim()empty()

trim()empty()确保有人输入除空白之外的某些文本.注意,这empty()是一个构造,必须在变量上调用,而不是trim()直接返回的字符串(我的猜测是因为它想要检查内存中的块,而不是堆栈上的值).

$email = trim($_POST['email']);

if (empty($email)) {
   $this->addError('You didn\'t type any non whitespace characters');
}
Run Code Online (Sandbox Code Playgroud)

当然,使用最终用户会理解的更好的错误.

这也经常使用,你可以做一个实用程序功能.

filter_var()

您可以使用它filter_var()来验证事物,例如验证电子邮件,IP和整数.

if ( ! filter_var($email, FILTER_VALIDATE_EMAIL)) {
   $this->addError('You did not enter a valid email');
}
Run Code Online (Sandbox Code Playgroud)

常用表达

正则表达式可以自己做很多事情,例如检查有效的字符,模式和长度.

if ( ! preg_match('/^\w{4,12}\z/', $username)) {
   $this->addError('You did not enter a valid email');
}
Run Code Online (Sandbox Code Playgroud)