2011-04-04 112 views
2

我開始爲我的項目使用codeigniter。我有我的網站的用戶身份驗證系統。我已經看到了來自nettuts的視頻的登錄信息。我很困惑爲什麼註銷無法正常工作。代碼點火器註銷功能

我在我的登錄控制器中有以下注銷功能。

function logout() { 
     $this->session->sess_destroy(); 
     redirect('main'); 
    } 

如果我點擊註銷按鈕,我將用戶重定向到主頁面。但是,在將用戶重定向到主頁面後,如果單擊瀏覽器上的後退按鈕,我會在頁面頂部看到註銷和我的名字。我需要在我要去的地方錯了或者一些幫助有代碼,我在我的控制器缺少

由於任何重要的一塊提前

編輯

我想我找到了解決辦法。我應該將以下代碼添加到相應的控制器中

$this->output->set_header("Cache-Control: no-store, no-cache, must-revalidate, no-transform, max-age=0, post-check=0, pre-check=0"); 
$this->output->set_header("Pragma: no-cache"); 

回答

3

我認爲這是瀏覽器緩存問題。如果您點擊返回,您實際上正在看到緩存頁面,就像您登錄時那樣。

嘗試並在返回到註銷頁面後立即點擊F5。它現在應該顯示您已註銷。

+0

是的,你是對的。這不是安全缺陷嗎?當我點擊註銷時,雖然我點擊後退按鈕,但我認爲我的代碼不應該允許用戶看到緩存頁面,我也相信。如果用戶在註銷之前已經看到一些重要信息,如果某個用戶點擊了後臺頁面,他將看到最後一次瀏覽的頁面。如何擺脫這個問題。 – user525146 2011-04-04 23:11:01

+0

您可以嘗試在所有登錄頁面上放置緩存標頭,這是目前我能想到的唯一解決方案......實際上,大多數網站似乎都存在此問題,包括此問題。 – jfoucher 2011-04-05 07:48:09

+0

將@amit的建議整合到您的答案中? – bacar 2014-09-04 08:03:05

3

添加標題,我的主要構造解決我的問題與IE7:

$this->output->set_header("Cache-Control: no-store, no-cache, must-revalidate, no-transform, max-age=0, post-check=0, pre-check=0"); 
$this->output->set_header("Pragma: no-cache");