Php 后退按钮重新提交表单数据($\u POST)

Php 后退按钮重新提交表单数据($\u POST),php,forms,post,button,back,Php,Forms,Post,Button,Back,我的问题是,当上一个页面由表单创建时,后退按钮会导致浏览器显示类似“页面过期”的内容 例如: 第1页:随搜索一起提交的表格 标准($\u POST请求,表格 指向第2页) 第2页:接收$u POST请求和 显示结果(包含链接的用户列表, 指向第3页) 第3页:显示用户配置文件 现在,当访问者单击浏览器中的后退按钮时,它将显示类似“页面已过期”的内容 相反,显示上一页时不应显示任何警告(第2页,带有用户列表) 你是如何避免这种行为的 在您发布到的脚本中发送一个位置标题,指向后面的页面。使用 如

我的问题是,当上一个页面由表单创建时,后退按钮会导致浏览器显示类似“页面过期”的内容

例如:

  • 第1页:随搜索一起提交的表格 标准($\u POST请求,表格 指向第2页)
  • 第2页:接收$u POST请求和 显示结果(包含链接的用户列表, 指向第3页)
  • 第3页:显示用户配置文件
现在,当访问者单击浏览器中的后退按钮时,它将显示类似“页面已过期”的内容

相反,显示上一页时不应显示任何警告(第2页,带有用户列表)


你是如何避免这种行为的

在您发布到的脚本中发送一个
位置
标题,指向后面的页面。

使用


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

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

或者,如果必须执行某些创建/修改操作:

  • 表单首先发布到第一页
    • 该页面执行一些操作(如向数据库写入内容)
    • 然后使用
      Location
      HTTP头重定向到另一个页面
  • 最后一个页面是浏览器使用GET请求进行的查询,显示从URL中接收的参数获取的数据

请参阅wikipedia上的页面,了解这一点。

不要使用POST进行搜索。使用GET可以安全地完成搜索,因为它不会改变任何内容

这适用于PHP和IE8

不仅必须将缓存设置为private,还必须删除4个缓存头,这只能通过PHP5.3实现。在PHP5.2中,如果使用Zend Framework的setHeader()方法,则只能将4个头设置为空值。由于某些原因,IE8上的4个标头值不足以设置为空值。以下是PHP5.3的代码:

    header_remove("Expires");
    header_remove("Cache-Control");
    header_remove("Pragma");
    header_remove("Last-Modified");

您可以使用会话来执行此操作

例如

$_SESSION['name']=$_POST['name']


记住在过程完成后取消设置变量以优化内存使用。

Wow!我刚刚学到了一些新东西:
not
tag操作符。回答得很好。再清楚不过了。给予的也比要求的多;选择和更多的洞察力。谢谢。但是当我发送GET请求时,URL不是用户友好的,并且包含所有搜索数据。我怎样才能解决这个问题?如果你不介意的话,还有一个问题。我使用POST方法,因为我的页面必须使用一些UTF-8字符(在我的例子中是“韩语”)进行搜索。它无法使用GET提供正确的搜索文本。然而,由于我使用了POST方法,bowser后退按钮不起作用。在这种情况下我能做什么?谢谢:这里会有问题,在获取变量,使清洁的搜索引擎优化网址。。如果某些变量留空…请使用HTTP状态代码303。如果没有根据当前文档明确指定,PHP默认为302。