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

时间:2011-04-22 04:29:56

标签: php validation

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

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

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

1 个答案:

答案 0 :(得分:5)

您需要检查所有内容,因为它无法自行检查。

PHP有很多有用的功能可以帮助...

isset()

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

实施例

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

trim()empty()

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

实施例

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

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

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

这也经常使用,你可以做一个实用程序功能来做到这一点。

filter_var()

您可以使用filter_var()来验证内容,例如验证电子邮件,IP和整数。

实施例

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

正则表达式

Regular Expressions可以自行完成,例如检查有效的字符,模式和长度。

实施例

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