【问题标题】:Saving form data when POST submission is not validatedPOST 提交未验证时保存表单数据
【发布时间】:2010-08-26 00:16:34
【问题描述】:

如果有验证错误,我需要在 php 中验证表单并在视图中显示一些错误消息。问题是一旦提交表单,将用户送回页面将清除所有已完成的表单字段。有没有一种简单的方法可以不丢失未经验证的表单数据?

我能想出的唯一解决方案是对 $_POST 变量进行逆向工程,但我想要一种更优雅的方法。

【问题讨论】:

    标签: php forms validation post


    【解决方案1】:

    不要将用户发送到任何地方,而是在您所在的位置重新呈现表单,使用输入的值预先填充表单。这将是最常见的方法。

    第二种方法是将值存储在session variables,但如果项目结构不允许第一种方法,那应该是最后的手段。

    【讨论】:

      【解决方案2】:

      在客户端验证。
      如果您必须在服务器端进行验证,请使用要验证的元素对服务器进行 ajax 调用(这样您就不必刷新页面)。进行所需的验证并将答案返回到页面(有效与否)。
      如果答案有效,您可以继续(注意:如果您需要继续的所有元素也都经过验证,您可能不需要在验证后返回页面)。
      如果它无效,则答案应返回无效元素(并且可能为每个元素返回一条错误消息),以便您可以显示所需的错误消息。

      【讨论】:

      • 客户端验证通常是不够的。可以关闭 JavaScript。此外,如果没有服务器端验证,有害数据可能会进入系统。
      • 客户端验证非常不安全,我需要检查服务器端的恶意数据,就像Pekka所说的那样,用户可以关闭JS,或者他们可能会摆弄视图以绕过安全检查。
      【解决方案3】:

      如果在用于准备表单的 php 代码中,您总是将字段值设置为 $_POST 数组中存在的任何值,那么在验证代码中,您可以简单地有条件地包含该表单文件,它将使用用户值呈现自己。当你第一次渲染表单时(空表单)$_POST 将没有带有字段名称的元素,并且表单将是空的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-02-17
        • 2018-11-08
        • 1970-01-01
        • 2016-08-16
        • 2012-10-02
        • 2012-11-20
        • 2016-09-23
        相关资源
        最近更新 更多