【发布时间】:2010-08-26 00:16:34
【问题描述】:
如果有验证错误,我需要在 php 中验证表单并在视图中显示一些错误消息。问题是一旦提交表单,将用户送回页面将清除所有已完成的表单字段。有没有一种简单的方法可以不丢失未经验证的表单数据?
我能想出的唯一解决方案是对 $_POST 变量进行逆向工程,但我想要一种更优雅的方法。
【问题讨论】:
标签: php forms validation post
如果有验证错误,我需要在 php 中验证表单并在视图中显示一些错误消息。问题是一旦提交表单,将用户送回页面将清除所有已完成的表单字段。有没有一种简单的方法可以不丢失未经验证的表单数据?
我能想出的唯一解决方案是对 $_POST 变量进行逆向工程,但我想要一种更优雅的方法。
【问题讨论】:
标签: php forms validation post
不要将用户发送到任何地方,而是在您所在的位置重新呈现表单,使用输入的值预先填充表单。这将是最常见的方法。
第二种方法是将值存储在session variables,但如果项目结构不允许第一种方法,那应该是最后的手段。
【讨论】:
在客户端验证。
如果您必须在服务器端进行验证,请使用要验证的元素对服务器进行 ajax 调用(这样您就不必刷新页面)。进行所需的验证并将答案返回到页面(有效与否)。
如果答案有效,您可以继续(注意:如果您需要继续的所有元素也都经过验证,您可能不需要在验证后返回页面)。
如果它无效,则答案应返回无效元素(并且可能为每个元素返回一条错误消息),以便您可以显示所需的错误消息。
【讨论】:
如果在用于准备表单的 php 代码中,您总是将字段值设置为 $_POST 数组中存在的任何值,那么在验证代码中,您可以简单地有条件地包含该表单文件,它将使用用户值呈现自己。当你第一次渲染表单时(空表单)$_POST 将没有带有字段名称的元素,并且表单将是空的。
【讨论】: