首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

解決 IE 後退或 history.go(-1) 出現「網頁已過期」的三種方法

     編輯:PHP 相關知識

當使用 IE 瀏覽器的後退按鈕或 JavaScript 的 history.go(-1) 時,若頁面已啟用 session_start(),PHP 會送出防快取標頭,導致瀏覽器顯示「警告:網頁已過期」。以下提供三種解決方案。

方法一:在 session_start() 後設定快取控制

<?php
session_start();
header("Cache-control: private"); // 必須在任何輸出之前
?>

private 表示僅允許私人快取(瀏覽器可快取),即可解決過期問題。

方法二:在 session_start() 前設定 session_cache_limiter

<?php
session_cache_limiter('private'); // 不清空表單,僅在 session 有效期內
session_start();
?>

session_cache_limiter 還有其他參數:

  • nocache:不快取,表單資料會清空。
  • public:允許代理伺服器快取,行為如同未使用 session。

方法三:修改 php.ini 設定

找到 session.cache_limiter 設定值:

; 預設為 nocache
session.cache_limiter = nocache

改為:

session.cache_limiter = private
; 或
session.cache_limiter = none

修改後需重新啟動 Apache(或 PHP-FPM)生效。

建議

方法二最簡單且不需修改伺服器設定,推薦在專案啟動檔(如 config.php)最開頭加入 session_cache_limiter('private'); 即可一勞永逸。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved