2013-10-10 128 views
0

因此,當會話超時在Codeigniter中工作時,我無法重定向到登錄頁面。這可能是我的一個很基本的錯誤,但我用我的控制器代碼:Codeigniter中的會話超時重定向

if(!$this->session->userdata('is_logged_in')) { 
    redirect('login/'); 
} 

它的工作原理,只要將用戶重定向到登錄頁面,但保持循環回到登錄頁。爲什麼是這樣?

+0

我不知道CI,但也許你正在登錄頁面中執行該代碼。 –

回答

1

也許是因爲會話中沒有數據,稱爲is_logged_in。如果您查看manual,你會看到存儲在會話中的默認數據:

Session數據是什麼?

會話,就笨而言,是一個包括下列信息的數組 :

用戶的唯一的會話ID(這是一個統計上隨機串 具有非常強的熵,與MD5散列以便攜帶,並且 每五分鐘重新生成(默認))用戶的IP地址 用戶的用戶代理數據(瀏覽器數據的前120個字符 字符串)「最後一次活動」時間戳。

您需要可以設置is_logged_in當用戶登錄或使用的東西已經在那裏像session_idlast_activity

+0

這確實是個問題。感謝Stormdrain。 – duckie715

1

您需要檢查用戶是否不在登錄頁面上。這聽起來像是在執行請求時執行。

像這樣的東西應該這樣做:

if(!$this->session->userdata('is_logged_in') && !strstr(current_url(), 'login/')) { 
    redirect('login/'); 
} 

這也可能是,像stormdrain說,會話數據未設置。

相關問題