在PHP中验证和清理用户输入

时间:2011-08-24 20:21:57

标签: php input-sanitization input-filtering

使用PHP提供的filter_var()sanitize_var()来过滤和清理变量,或者有更好的选择,这是最佳做法吗?

谢谢。

4 个答案:

答案 0 :(得分:0)

我会一直考虑以下口头禅...... “永远不要相信用户输入” ctype_alpha,ctype_alnum也是表现良好的验证器,并记得验证客户端(javascript验证),这也有助于减少服务器负载

答案 1 :(得分:0)

我想提及HTML Purifier任何HTML过滤/清理。

对于通用验证(数字,日期和其他值),有很多库,还有内置函数,你可以选择最合适的,但我仍然想提到{{3}如果你已经使用了Zend Framework。

答案 2 :(得分:0)

让我们尝试验证表单中的输入。

我们需要做的第一件事就是确认我们正在寻找的输入数据。

然后我们使用filter_input()函数过滤输入数据。

在下面的示例中,输入变量“email”被发送到PHP页面:

答案 3 :(得分:0)

我认为最好使用HTML5进行客户端验证,然后使用服务器端。 PHP具有过滤字符串的FILTER_SANITIZE_STRING(尽管您不需要验证)等功能,您可以使用FILTER_VALIDATE_EMAIL而不是使用正则表达式手动验证电子邮件。您还可以使用限制,例如多少字符等。

概念上的例子......

if form is submitted 
  if 'name' is not empty
    create a variable that equals filter_var($_POST['name'], FILTER_SANITIZE_STRING)
    if 'name' is empty then set echo an error message

  if 'email is not empty
    create a variable that equals filter_var($_POST['email'], FILTER_SANITIZE_STRING)
    // then you can validate email
    if (!filter_var($email, FILTER_VALIDATE_EMAIL))
      error message
  // do this for other variables

  if there's not error
    send email and or a thank you message

 //FORM here