【问题标题】:How do i validate user input in PHP我如何在 PHP 中验证用户输入
【发布时间】:2011-06-26 18:36:38
【问题描述】:

我正在寻找一个可以帮助我验证来自表单的用户输入的 PHP 类。例如,确保用户已输入必填字段,字段未超过其最大长度,用户已在“年龄”字段中输入数字等等......如果不是,我想显示用户一个错误并将该错误记录到数据库中。此外,如果可能的话,使用同一个类来防止用户输入的 sql 注入和 xss。 是否有一个 PHP 5 类可以帮助我完成所有这些任务? (或多个类?)

【问题讨论】:

标签: php error-handling validation kohana-3 xss


【解决方案1】:

您的意思是说您想检查用户是否使用 PHP 在服务器端正确输入了所有字段?如果是,那么您的方法效率很低,因为它会增加服务器上的流量和负载以进行错误的提交。因此,通常所做的是使用 Javascript 客户端脚本在提交之前验证表单。此链接可以帮助您在 Javascript 中实现简单的客户端验证。 http://www.elated.com/articles/form-validation-with-javascript/

正如 deceze 所指出的,如果您需要使用 PHP 进行服务器端验证,那么此链接有一个简单的示例,说明如何使用一些内置函数进行验证。 http://www.htmlcenter.com/blog/php-form-validation/

【讨论】:

  • 无论如何,他仍然需要服务器端验证。
  • 他需要在客户端验证数据后第二次进行服务器端验证?你能解释一下为什么吗?我不知道。这就是我问的原因。
  • 真的吗?如果客户端没有 Javascript 怎么办?还是故意关掉?或者甚至不使用浏览器(恶意)将数据发布到服务器?您只想让未经验证的数据通过吗?
  • 好点。没有这么想。感谢您指出。
  • 关于 Web 应用程序的第一课:始终不信任客户端及其上运行的任何代码。您的服务器是一个大黑匣子,它决定一切并将每个输入视为敌对,直到被隔离。 :)
【解决方案2】:
$post = Validate::factory($_POST)

->filter(TRUE, 'trim')
->rule('name','not_empty')
->rule('age','not_empty')

以上代码表示如何使用它。如需更多参考,请访问以下链接

http://kohanaframework.org/3.0/guide/kohana/security/validation

希望这会有所帮助。

谢谢。

【讨论】:

    【解决方案3】:

    您可以同时使用 javascript 框架(即 jquery)和 php。

    您的 html 表单将 ajax 数据发布到服务器。您的服务器返回各种错误或成功代码。然后您可以使用 jquery 操作您的 html。 这是客户端usinf jquery的示例;

        $( "a#logSubmit").click(function(){
        $.post("/control.php?process=login", {username: $('input#logName').val(), password: $('input#logPass').val()},
       function(data) {
         if(data == "ok"){
         //success
         $( "#dialog-login" ).dialog("close");
         }
         else{
             $("label#input").html("your input is not valid");
             }
       });
    });
    

    你的php端应该是这样的

    <?php
    if(!isset($_POST['nik']) or !isset($_POST['pass']))
    {
        die("not ok");
    }
    if($_POST['nik']=="" or $_POST['pass'] =="")
    {
    
        die("not ok");
    }
    
    //here you can`enter code here` validate your data and issue a custom error or success response.
    
    //success!
    die('ok');
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多