我的问题是后退按钮使浏览器说类似“网页过期”的时候,前面的页面是由形式创建的。
例子:
- 第1页:与联系接收用户$ _ POST请求,并 显示结果(表:表格搜索 规定 - ($ _ POST请求的形式 点到第2页)
- 第2页提交, 分3页)
- 第3页:显示用户配置文件
现在,当v isitor点击浏览器中的后退按钮,它会显示“Page expired”之类的内容。
而不是以前的页面应该没有警告(第2页,与用户列表)
如何是你的策略来解决这个问题显示?
我的问题是后退按钮使浏览器说类似“网页过期”的时候,前面的页面是由形式创建的。
例子:
现在,当v isitor点击浏览器中的后退按钮,它会显示“Page expired”之类的内容。
而不是以前的页面应该没有警告(第2页,与用户列表)
如何是你的策略来解决这个问题显示?
如果您要提交与搜索参数,你想得到一些数据,而不是修改一些。
所以,你应该使用HTTP GET方法,而不是POST:POST应该当你打算创建/修改数据,和GET时,应使用你打算获取一些数据使用。
或者,如果你有一些创建/修改必须完成操作:
Location
HTTP标头。查看wikipedia上关于此页面的Post/Redirect/Get页面。
另外,如果您使用GET,结果页面可加书签 – 2010-01-27 11:36:27
优秀的答案。不可能更清楚并且重要。同时给予更多的要求;备选方案和更多见解。谢谢。 – Cudos 2010-01-27 11:46:52
@Cudos:不客气:-)玩得开心! – 2010-01-27 12:11:24
送在你发布到脚本Location
头,指着随附后的页面。
对此使用HTTP状态码303。根据当前文档,如果未明确指定,则PHP默认为302。 – MattBianco 2014-06-05 13:49:59
请勿使用POST进行搜索。搜索可以安全地使用GET完成,因为它不会改变任何内容。
这适用于PHP和IE8。
不仅必须设置cacheing私人,但你必须删除4 cacheing头,这只能与PHP 5.3来完成。在PHP 5中。2如果使用Zend Framework的setHeader()方法,只能将4个标头设置为空值。出于某种原因,在IE8上将4个标头值设置为空值是不够的。这里是PHP 5.3的代码:
header_remove("Expires");
header_remove("Cache-Control");
header_remove("Pragma");
header_remove("Last-Modified");
你可以使用session来做到这一点。
例如。
$ _SESSION ['name'] = $ _POST ['name'];
记住在过程完成后取消设置变量以优化内存使用情况。
哇!我只是学习一些新的东西:'not'标签操作符。 xD – 2010-01-27 11:31:57