我使用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,並在訪問該網站時進行檢查。就我所能看到的而言,這是正確的方法,而不是無限期地使會話持續下去。
由於我將application/config/config.php文件中的$ sess_expiration的值更改爲0,是不是解決了這個問題?文件中的註釋狀態爲: | 'sess_expiration'\t \t \t =您希望會話持續的秒數。 |默認會話持續7200秒(兩小時)。設置爲零不過期。 –