2012-01-10 63 views
0

我正在開發CodeIgniter框架。CodeIgniter會話在配置文件中過期

我想要什麼,是該網站的會話截止時間設定到3小時即(3600×3 = 10800秒)。

但是,當我在的config.php設置$config['sess_expiration'] = 10800;,會話得到大約30分鐘的空閒內過期,將被重定向到登錄頁面。

這是怎麼發生的?

這些都是我的一些會話設置在配置

$config['sess_cookie_name']  = 'ci_session'; 
    $config['sess_expiration']  = 10800; 
     $config['sess_encrypt_cookie'] = FALSE; 
    $config['sess_use_database'] = TRUE; 
    $config['sess_table_name']  = 'ci_sessions'; 
    $config['sess_match_ip']  = FALSE; 
    $config['sess_match_useragent'] = TRUE; 
    $config['sess_time_to_update'] = 300; 
+0

感謝科林的正常編輯的問題。 – 2012-01-10 13:49:23

+0

有人對此主題感興趣嗎? – 2012-01-10 13:54:52

+0

你使用數據庫進行會話嗎? – tpae 2012-01-10 14:10:54

回答

3

確保您有ci_sessions表在數據庫中。

CREATE TABLE IF NOT EXISTS `ci_sessions` (
    session_id varchar(40) DEFAULT '0' NOT NULL, 
    ip_address varchar(16) DEFAULT '0' NOT NULL, 
    user_agent varchar(120) NOT NULL, 
    last_activity int(10) unsigned DEFAULT 0 NOT NULL, 
    user_data text NOT NULL, 
    PRIMARY KEY (session_id), 
    KEY `last_activity_idx` (`last_activity`) 
); 

編輯:還,請確保您使用的不是$ _SESSION$這個 - >會話級> set_userdata($陣列);

鏈接:http://codeigniter.com/user_guide/libraries/sessions.html

+0

我會檢查,謝謝,但目前我無法檢查分貝,我會在2小時內檢查,也算得上是存在的 – 2012-01-10 14:32:25

+0

由於唯一的問題@tpae ............ – 2012-01-10 14:33:16

+0

如果您正在使用最新的CodeIgniter,這是你的配置,然後是的。我沒有看到任何其他問題。如果您不確定是否擁有ci_sessions表,那可能是問題所在。如果沒有,請嘗試禁用使用數據庫功能,並使用cookie進行嘗試。 – tpae 2012-01-10 14:33:44

1

檢查這樣的代碼:

if($login) 
{ 
    $this->session->sess_expire_on_close = TRUE; 
} 
else 
{ 
    $this->session->sess_expiration = 60*60*3; 
    $this->session->sess_expire_on_close = FALSE; 
} 

    $this->session->set_userdata('your_item'); 
+0

我應該在配置頁面提供這段代碼嗎? – 2012-01-10 16:55:27

+0

不,在您的控制器文件中。 – 2012-01-10 16:59:44

+0

會在哪個控制器文件中? – 2012-01-10 17:00:47