我正在研究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 :(得分: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 与 $ this-> session-> set_userdata($ array); 强>
链接: http://codeigniter.com/user_guide/libraries/sessions.html
答案 1 :(得分: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');
答案 2 :(得分:0)
检查session.gc_lifetime
中php.ini
的配置。
默认情况下,这是1440或24分钟。这意味着每当PHP的垃圾收集器运行时(它在每个页面加载时都有配置的概率),任何超过24分钟的会话都将通过CodeIgniter会话驱动程序中的gc()
函数清除。