我的問題是後退按鈕使瀏覽器說類似「網頁過期」的時候,前面的頁面是由形式創建的。
例子:
- 第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