我正在使用 CodeIgniter 的内置会话,而不是 PHP 会话(阅读更多:http ://codeigniter.com/user_guide/libraries/sessions.html )。我还将用户的会话保存到我的数据库中的一个表中。我遇到了一个问题,即用户的会话数据将在一段时间不活动后重置为默认值,而我的预期操作是让它永远存在/直到用户注销/清除他们的 cookie。
这是我的 CodeIgniter 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,并在访问网站时对其进行检查。据我所知,这是正确的方法,而不是试图让会话无限期地持续下去。