2012-05-02 203 views
5

我試圖在用戶註銷CodeIgniter(PHP)應用程序時停止/禁用瀏覽器的後退按鈕功能。但是,我認爲瀏覽器正在緩存頁面,因此儘管會話從註銷中銷燬,它仍然可見。註銷後的CodeIgniter後退按鈕

我知道會話是死的,因爲當用戶試圖做任何事情(點擊任何鏈接等),他們通過我的控制器中的方法踢出。

由於上一頁包含機密信息,因此使用後退按鈕以這種方式工作並不理想。

不知道如何解決這個問題,也許是一個介於兩者之間的重定向頁面(但用戶可以很快地將後退按鈕放在右邊?),幫助!

謝謝。

+0

http://stackoverflow.com/questions/5251110/back-button-takes-the-user-back-to-protected-page-after-logout-zend-framework不codeigniter,但我想你會讓它工作 –

+1

檢查這一個,我認爲它會幫助你http://stackoverflow.com/questions/4630484/how-do-i-make-firefox-reload-page-when-back-button-is-pressed – Ula

+0

感謝@Ula,頭文件解決方案爲我工作。 –

回答

12

添加是爲了防止以前的頁面緩存:

header("cache-Control: no-store, no-cache, must-revalidate"); 
header("cache-Control: post-check=0, pre-check=0", false); 
header("Pragma: no-cache"); 
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); 
0

後註銷轉到一個頁面顯示像有些消息「很快見到你」一段時間後,從到所需的頁面,這可能解決您的問題 如下面的代碼爲重定向第二次 頭重定向(「刷新3; URL = home.php「);

+0

http://stackoverflow.com/questions/6648093/php-prevent-going-back-page-after-log-out – user1370510

0

您可以在註銷後使用javascript關閉窗口 - 從而消除返回頁面的任何能力。

很多網上銀行都這樣做來解決這個問題。

13

我認爲這可以幫助你,它爲我工作。

笨Framework版本:

$this->output->set_header('Last-Modified:'.gmdate('D, d M Y H:i:s').'GMT'); 
$this->output->set_header('Cache-Control: no-store, no-cache, must-revalidate'); 
$this->output->set_header('Cache-Control: post-check=0, pre-check=0',false); 
$this->output->set_header('Pragma: no-cache'); 

PHP版本:

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'); 

如果你正在使用PHP OOP把上面的代碼在構造函數初始化您的網頁上。

+0

我應該在哪裏添加上面的代碼?在控制器或每個視圖頁面?我正在使用codeigniter框架。 –

0

我認爲有以下應該幫助你

1)創建一個logout.php文件和下面的代碼添加到它

<html> 
<head> 
    <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
$("#submit").trigger("click"); 
}); 
</script> 
</head> 

<body> 
<form action="<?php echo base_url();?>login" method="post"> 
<input type="submit" id="submit" style="display: none;"> 
</form> 
</body> 
</html> 

2)修改註銷功能加載上面的視圖文件logout.php

1

我對這個問題的解決方案:

  1. 檢查cookie設置WIL l與一個if。
  2. 步驟參數並調用用戶模型的登錄方法。
  3. 最後收取相應的意見。

如果未設置cookie,則會重定向到登錄頁面。

if(isset($_COOKIE['ci_session'])){ 
    $user= $this->security->xss_clean($this->input->post('user')); 
    $pass= $this->security->xss_clean($this->input->post('pass')); 

    $result = $usrLog->loguearUsuario($user, $pass); 

    if($result == TRUE){ 
    $data = $this->session->set_userdata('logged_in', $sessArray); 
    $this->load->view('pages/admin', $data); 
    } 

}else{ 
    header('Location: login'); 
} 

我希望你能學習!對不起,我的英語!:-)