PHP - 表单,发布到同一页面,错误处理,防止重新提交

时间:2015-11-12 19:51:52

标签: php forms post error-handling

在制作自己的框架时,我遇到了很多问题。我发现了其他一些问题,这些问题与我提出的问题很接近,但并不完全正确。

这就是我的尝试:

  • Page有一个带有方法发布的表单并提交给自己(同一页面)。
  • 提交时,输入会验证相应的消息/错误 显示。

看起来很简单,但我想:

  • 避免使用帖子附带的表单重新提交。这不会 如果我也不想尝试......那就是问题。
  • 避免重复或代码超出需要。重定向添加了一个额外的操作,我需要检查输入两次(一次在提交页面上进行验证,一次在重定向页面上查看消息/错误)。
  • 避免使用查询字符串,Cookie或会话。这使得 发布到另一个页面的解决方案,然后重定向,同时仍然无法处理消息 (据我所知)。
  • 避免依赖AJAX,因为可以禁用JS。

我问得太多了还是有办法做到这一点?有什么我需要妥协才能实现这一目标吗?如果没有,那么我想我会选择会话和重定向。

1 个答案:

答案 0 :(得分:1)

我不确定我是否理解,您是否需要在同一页面处理$ _POST,该页面保存表格并避免重新发送数据?

如果是这样,你需要重新加载页面,在进行表单后不需要POST ... 即。

 if(isset($_POST["YOUR_FORM_FIELD"])){
   header("Location: ".$_SERVER["HTTP_REFERER"]);
   exit();
 }

但是 - 重新加载与您不使用_SESSION的请求相冲突,或_GET nad发送要显示的消息。我没有找到如何通过HTTP标头传递变量的方法 - 这在我看来是唯一的方式...

无论如何我建议考虑使用_SESSION ....