經驗交流

「警告:網頁已經過期」

問題說明
 您看過這個畫面嗎?
 我以下圖來為您說明它的成因:
 B.php 的顯示內容係依 A.php 傳回的檢索值而定。若 A.php 中的表單使用 POST method 傳送資料,使用者在 B.php 中點選了某個連結點,進而開啟了 C.php 的話(如上圖),問題就有可能發生了。
 一旦使用者利用瀏覽器本身的功能(工具列上的「回上一頁」、鍵盤上的 BackSpace 鍵)或是 script language 的 history.back( ),而試圖回到 B.php 的話,畫面上就會出現「警告:網頁已經過期......」。
 這是因為您要回到 http://xxx.xxx.xxx.xxx/B.php 去,但是這頁的資料得視來自 A.php 的參數而定,所以瀏覽器基於「安全性」的考量,得等您重新整該網頁,才會為您重送資料給 B.php。

我的做法
 如果來自 A.php 的資料量不大的話,您可以將 POST method 改成 GET method,這麼一來,在連到 B.php 時,網址後頭會串接使用者輸入的資料,如:http://xxx.xxx.xxx.xxx/B.php?org=ksnet&department=program,這些資料同時也會被當作是網址的一部份。
 當使用者從 C.php 裡頭要求回上一頁時,他將連結的網址將是 http://xxx.xxx.xxx.xxx/B.php?org=ksnet&department=program。這樣一來,等於自動將資料重送給 B.php 了。
 如果您不希望使用 GET method 的話,那麼您也可以利用 Session 變數將使用者從 A.php 送到 B.php 的資料記錄下來,並且在 C.php 裡頭加入一個與 A.php 中類似的表單,並將檢索資料記錄在其中,然後製作一個明顯的「回上一頁」按鈕,當使用者去點它時,將這些資料再送給 B.php 去執行。
經驗交流