【问题标题】:validation in phpphp中的验证
【发布时间】:2010-04-05 20:44:27
【问题描述】:

我有一个提交页面html。当我提交表单数据时,它会进入一个 php 页面,该页面将数据插入数据库。

我的问题是如何在不使用 javascript 的情况下确保 html 页面上的数据不为空或为空?无论如何这可以在php中完成吗?谢谢!

【问题讨论】:

    标签: php html database validation form-data


    【解决方案1】:

    像往常一样简单地使用控制结构:

    $non_empties = array('name', 'email', 'address');
    
    foreach ($non_empties as $field) {
        if (! isset($_POST[$field]) || $_POST[$field] == '') {
            show_error("Please fill your $field, thank you.");
        }
    }
    
    $db->insert();
    

    更高级的例子:

    // Defined in your library
    function validate_as_non_empty(Array $non_empties) {
        foreach ($non_empties as $field) {
            if (! isset($_POST[$field]) || $_POST[$field] == '') {
                throw new Exception("Please fill your $field, thank you.");
            }
        }
    }
    
    // Defined in your library
    function validate_as_foo(Array $arr) { ... }
    
    // Your request handler
    try {
        validate_as_non_empty(array('name', 'address'));
        validate_as_foo(array('email'));
        $db->insert();
    } catch (Exception $e) {
        show_error($e->getMessage());
    }
    

    至少有百万种方法可以进行验证。通常你有某种框架可以依赖。以上示例仅供参考。

    【讨论】:

      【解决方案2】:

      在您的 php 页面的最顶部,(您在表单的 action 属性中链接到的页面)放置:

      if (isset($_POST['submit_check']) && strlen($_POST['whatever'])) { // submit_check is a hidden form field
          insert_to_db();
          header('Location: success.php'); // redirect to another page to prevent double-submits
          exit;
      }
      

      所以你的 html 可能看起来像:

      <form action="" method="post"> 
          <input type="text" name="whatever"/>
          <input type="hidden" name="submit_check" value="1"/> 
      </form>
      

      空白动作值表示发布到同一页面,但您可以根据需要发布到另一个页面。

      【讨论】:

      • 您仍然可以使用 javascript 和 php 对您的数据进行一些验证。而且您绝对应该使用 php 进行验证。由于您要将用户输入插入数据库,因此请使用准备好的语句(也称为参数化查询,以防止 sql 注入攻击)
      【解决方案3】:

      在 PHP 文件中使用 $_POST 超级全局变量检索提交的数据,如下所示:

      $_POST['firstname'] 用于每个被 POST 编辑的 HTML 元素。例如,在您的 HTML 中:

      <input type="text" name="firstname" />
      

      然后使用 PHP、regex、isset 等验证数据,并相应地重定向到成功页面或返回 HTML 表单。

      您也可以使用 Ajax 执行相同的操作(将应用相同的 PHP 验证,只是数据传输模型略有不同)

      【讨论】:

        【解决方案4】:

        如果您要问的是“我能否确保数据在没有 javascript 的情况下在客户端有效”,那么答案是否定的。

        但是,如果您只想确保在将数据插入数据库之前对其进行验证,那么当然可以。

        foreach ($_POST as $key=> $value) {
        
          switch ($key) {
           case 'my_value_name':
              //test $value is not null and other validation;
              //insert into database function
              break;
        
           ...
        
          }
        
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-05-06
          • 2012-11-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多