CodeIgniter会话在Config文件中过期

时间:2012-01-10 13:35:56

标签: codeigniter session

我正在研究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;

3 个答案:

答案 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_lifetimephp.ini的配置。

默认情况下,这是1440或24分钟。这意味着每当PHP的垃圾收集器运行时(它在每个页面加载时都有配置的概率),任何超过24分钟的会话都将通过CodeIgniter会话驱动程序中的gc()函数清除。