【问题标题】:How to handle post variable data while clicking on back buton单击后退按钮时如何处理发布变量数据
【发布时间】:2018-02-15 11:13:58
【问题描述】:

我正在尝试制作一些导航,例如第 1 页有一些需要在第 2 页上发布的数据。在表单和隐藏元素的帮助下,我将这些数据发送到第 2 页并接受使用 $_POST 方法。再次拥有一些需要使用相同的发布方法方法和隐藏输入元素发送第 3 页的数据。在第 4 页上,我正在使用与 $_POST 相同的方法接受数据。我可以根据需要从那里获取数据。

但我试图从第 4 页单击返回按钮到第 3 页,然后单击从第 2 页发布了一些数据的页面。该数据从那里丢失并出现“确认表单重新提交”之类的错误。我用 $_SESSION 尝试过同样的事情,但它在这里不起作用。

谁能告诉我如何解决这个问题。Kindly see this image attachment

【问题讨论】:

  • 你为什么不用$_GET?有什么特殊要求吗?
  • $_GET 在 URL 中显示数据并且它不符合要求。您能否提出解决此问题的建议。

标签: php postback


【解决方案1】:

这不是您看到的错误页面。 Confirm Form Resubmission 页面询问您是否要再次发布数据。所以它会询问您是否要使用从第 2 页发送的数据重新加载第 3 页。

这是标准的网络浏览器实践,并在所有浏览器中复制。

可能是一个愚蠢的问题,但您是否真的尝试过重新加载此页面并接受重新提交数据?

【讨论】:

  • 是的,我知道一旦你刷新页面,你会得到我们想要的数据,但问题是我们需要刷新页面,而普通用户不知道这些事情。我已经提出了关于普通网络用户的一半不是开发人员的观点。
  • 有没有其他方法可以在不显示重新提交问题的情况下处理此问题..??
  • 不简单。最好的方法是让页面通过标准的 GET 过程提交。然后变量在 URL 中传播,您不会收到 POST 重新提交问题。
【解决方案2】:

在步骤之间使用会话机制将中间数据存储在服务器端。为避免表单重新提交问题,请在每次 POST 后使用 header() 函数重定向到下一步。因此,每个页面都将使用 GET 方法加载,并且很容易兼容“返回”按钮。

【讨论】:

  • 是的,我使用过这个,但是在返回上一页时遇到了同样的问题。 if(!empty($_POST['pid'])){ $_SESSION['pid']=$_POST['pid']; } $pid=$_SESSION['pid'];
  • 通过有关如何避免表单重新提交问题的信息改进了我的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-16
  • 1970-01-01
相关资源
最近更新 更多