【发布时间】:2013-06-28 01:15:51
【问题描述】:
短版:
- 我有一个包含 100 多个字段的表单,每个字段都有服务器端验证。
- 我的表单正在工作并且数据已成功提交;当验证出现错误时,我什至会将它们重定向回表单,并显示具体发生了什么错误。
- 当他们被重定向回(大量)表单时,他们的所有数据都消失了,他们需要再次输入。
我已经想到了几种方法来回答我自己的问题,但它们并不是最优雅的解决方案。
我目前的想法是:将他们所有输入的数据保存为 $_SESSION 变量——并且每当他们加载表单时,围绕每个输入执行if 语句,这样;
if(isset($_SESSION['foo_data'])) {
echo "<input type='text' name='foo' value='$_SESSION["foo_data"]'>";
} else {
echo "<input type='text' name='foo' placeholder='Enter your text here...'>";
}
这个方法会工作,但它也需要对 140 多个会话变量进行极其繁琐的定义,然后围绕 EVERY 创建更加繁琐和庞大的 if/else 语句> 表单域。
有没有更好的方法来做到这一点?
附加信息:使用纯 php,没有任何类型的框架。
【问题讨论】:
-
我会有一个 array() 保存表单字段,然后是一个循环来构建表单(检查会话值)
-
如果一开始就有错误,为什么要重定向?
-
One Trick Pony:我目前正在一个单独的 PHP 文件中一起进行验证。您介意解释一下在同一个文件中进行验证会如何改变事情吗?
-
将支票保存在单独的文件中。我只是说您可以在检查失败后显示表单,这样您就可以保持提交的 $_POST 数据并避免使用会话。除非表单提交成功,否则不需要重定向
-
呃,这不是让我处于同样的境地吗? (必须使用 140 个
if / else语句为isset($_POST['foo_data']回显不同的输入,就像我对会话变量所做的一样)。
标签: php forms redirect autofill