2013-03-01 148 views
0

我有一個使用用戶名和密碼的日誌系統,用戶使用用戶名和密碼登錄後,如果我按下後退按鈕,它會將我重定向到登錄頁面。 如何防止這在php ??按下後退按鈕可重定向登錄的用戶以註銷?

+0

你爲什麼要這個...? – 2013-03-01 06:42:22

+1

我認爲您可以在登錄頁面執行檢查:如果此用戶已經登錄 - 將他重定向到其他地方。 – k102 2013-03-01 06:45:57

+0

那不是我的問題.. – AndRaGhu 2013-03-01 06:48:40

回答

0

您必須檢查用戶的會話。然後會話存在時,提示用戶已經登錄或將用戶重定向到index.php或其他東西。

+0

如何訪問瀏覽器後退按鈕的功能? – AndRaGhu 2013-03-01 06:49:42

+1

@AndRaGhu,你不能在php中控制用戶的「後退按鈕」,因爲PHP是服務器端。自己寫一本關於網絡編程的書。 – k102 2013-03-01 06:53:41

+0

當用戶登錄時,您需要將他重定向到一個頁面以防止重新提交警告。 – 2013-03-01 06:53:49

4

首先要進行的網頁過期,防止它們被瀏覽器被緩存:

<? 
//Set no caching 
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
header("Cache-Control: no-store, no-cache, must-revalidate"); 
header("Cache-Control: post-check=0, pre-check=0", false); 
header("Pragma: no-cache"); 
?> 

其次,你應該檢查,如果用戶登錄,如果是這樣,重定向他們回到以前的頁面,這樣的事情:

// SET REFERRER 

    function strleft($s1, $s2) { 
     return substr($s1, 0, strpos($s1, $s2)); 
    } 

    function selfURL() { 
     if(!isset($_SERVER['REQUEST_URI'])) { 
      $serverrequri = $_SERVER['PHP_SELF']; 
     } 
     else { 
      $serverrequri = $_SERVER['REQUEST_URI']; 
     } 
     $s = empty($_SERVER["HTTPS"]) ? '' : ($_SERVER["HTTPS"] == "on") ? "s" : ""; 
     $protocol = strleft(strtolower($_SERVER["SERVER_PROTOCOL"]), "/").$s; 
     $port = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":".$_SERVER["SERVER_PORT"]); 
     $_SESSION['ref'] = $protocol."://>/".$_SERVER['SERVER_NAME'].$port.$serverrequri; 
    }    

selfURL(); 

然後

header("Location: " . $_SESSION['ref']);

0

根據您的意見,您建議您真正要問的問題是如何禁用後退按鈕?

這絕對不可能從PHP,我想可能根本不可能,因爲它是由瀏覽器控制的。 JavaScript爲您提供了一些控制,以便您可以找到忽略或禁用按鈕的代碼。

谷歌搜索'JavaScript禁用後退按鈕'應該會給你一些結果。

相關問題