2012-06-10 32 views
2

我使用CodeIgniter內置的會話,而不是PHP會話(閱讀更多:http://codeigniter.com/user_guide/libraries/sessions.html)。我也將用戶的會話保存到我的數據庫中的表中。我遇到了一個問題,即用戶的會話數據在一段時間不活動後會重置爲默認值,當我的意圖操作是永久保存/直到用戶註銷/清除其Cookie。讓CI會話永遠保持下去嗎?

這裏是我笨的application/config/config.php文件設置:

$config['sess_cookie_name']  = 'ci_session'; 
$config['sess_expiration']  = 0; 
$config['sess_expire_on_close'] = FALSE; 
$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; 

從理論上講,我想,既然sess_expiration設置爲0,這將持續到列出的操作之一以上發生。不幸的是,它看起來像是在30分鐘左右之後纔會超時?我沒有指出這個數字,但問題在於它太短了。

我也讀過關於如何CI和AJAX調用可能會遇到一堆問題。儘管我的網站使用了很多AJAX呼叫,但即使有人登錄一次,也沒有做任何事情,會話將在約30分鐘後回來,並且看到他們已經註銷!

編輯:僅供將來參考,如果有人絆倒這個話題:我正在實施一個「記住我」功能。這將在用戶的瀏覽器中存儲cookie,並在訪問該網站時進行檢查。就我所能看到的而言,這是正確的方法,而不是無限期地使會話持續下去。

回答

0

採取/system/libraries/Session.php 會話過期看看sess_read()和sess_update()與last_activity檢查+ sess_expiration <現在 也許你需要改變的$ sess_expiration

默認值
var $sess_expiration   = 7200; 
+1

由於我將application/config/config.php文件中的$ sess_expiration的值更改爲0,是不是解決了這個問題?文件中的註釋狀態爲: | 'sess_expiration'\t \t \t =您希望會話持續的秒數。 |默認會話持續7200秒(兩小時)。設置爲零不過期。 –