2016-08-10 101 views
0

我試圖讓PHP應用程序在Firefox或Internet Explorer瀏覽器上重新加載頁面後退或頁面前進。如何在瀏覽器上按下後退按鈕時強制重新加載PHP頁面?

我已經制定了下面的代碼,部分頁面的部分工作,換句話說,當我前後導航時,我得到一個頁面重新加載而不是Document Expired或緩存頁面。其他頁面不能成功地將頁面內容重新加載到後退或前進按鈕上,而是給出常見消息Document Expired,表示我的方法在這些頁面上沒有成功。

session.php文件 - 包括所有PHP腳本的頂部,主要處理的請求重載

<?php 
     session_start(); 

     $_SESSION['page_requested'] = $_SERVER['REQUEST_URI']; 


     if (isset($_POST['scrollamount']) && $_POST['scrollamount'] != "") 
       $_SESSION['scrollamount'] = $_POST['scrollamount']; 


     if (isset($_SESSION['page_loaded']) && !isset($_GET['load'])) 
     { 
      unset($_SESSION['page_loaded']); 
      if (strpos($_SESSION['page_requested'], '?') !== false) 
      { 
       header("Location: $_SESSION[page_requested]&load=1"); 
       exit; 
      } 
      else 
      { 
       header("Location: $_SESSION[page_requested]?load=1"); 
       exit; 
      }  
     } 
     else if (!isset($_GET['load'])) 
     { 
      header("Location: ?load=1"); 
      exit; 
     } 
    ?> 

reload.php頁的負荷 - 這將清除GET值,以便重定向循環是沒有遇到這個腳本是一個在上面,每個PHP腳本

<? 
     $_SESSION['page_loaded'] = true; 
     $_SESSION['page_requested'] = str_replace('&load=1', '', $_SESSION['page_requested']); 
     $_SESSION['page_requested'] = str_replace('?load=1', '', $_SESSION['page_requested']); 
?> 

利用標籤每個PHP頁面我已經修改了內容到TA的包括後g將<body onunload="">嘗試強制重新加載一些有見地的建議。

不幸的是,重新加載行爲並不一致和可靠。

我該如何修改我到目前爲止在所有PHP腳本中工作的內容?

回答

0

簡答:你不能。

當用戶按下「返回」時,瀏覽器知道前一頁是通過POST提交的,並詢問用戶是否希望在加載任何內容之前重新提交表單。因此,無法通過服務器端或客戶端腳本添加任何會觸發重新加載的內容,因爲瀏覽器在提示用戶之前甚至不會加載它。

防止這種情況的唯一方法是從POST切換到GET(當然還有其他缺點)。或者,您可以對所有POST表單使用AJAX,並在結果進入後將其重定向到下一頁。

相關問題