后退按钮重新提交表单数据 ($_POST)

2022-08-30 20:54:19

我的问题是,当上一页是由表单创建的时,后退按钮会导致浏览器说“页面已过期”。

例:

  • page1:使用搜索条件提交的表单($_POST请求,表单指向页面2)
  • page2:接收 $_POST 请求并显示结果(带有链接的用户列表,指向 page3)
  • 第 3 页:显示用户配置文件

现在,当访问者单击浏览器中的后退按钮时,它将显示类似“页面已过期”的内容。

相反,上一页应该显示没有警告(第2页,带有用户列表)

您如何采取策略来规避这种行为?


答案 1

如果您要提交带有搜索参数的表单,则您尝试获取一些数据,而不是修改某些数据。

因此,您应该使用HTTP GET方法,而不是POST:当您打算创建/修改数据时应使用POST,而当您打算获取某些数据时应使用GET。

或者,如果您有一些必须完成的创建/修改操作:

  • 表单的第一个 POSTT 到第一个页面
    • 该页面执行一些操作(例如将某些内容写入数据库)
    • 然后使用HTTP标头重定向到另一个页面。Location
  • 这是最后一页,即浏览器使用 GET 请求进行的查询,它显示从 URL 中接收的参数中提取的数据。

请参阅维基百科上的帖子/重定向/获取页面,关于这一点。


推荐