Codeigniter增加会话时间不起作用

时间:2014-02-13 10:41:50

标签: php mysql codeigniter

我是codeigniter框架的新手。我的页面会话超时有问题。     现在我启用了ip匹配,用户代理匹配但不起作用。     我试过的另一种方法是更新2.1.4库文件并复制到我的系统中     文件夹,但这也没有用。

请帮我解决会话超时问题。以下是我用过的代码     config-> config.php中

$config['sess_cookie_name']     = 'ci_session';
$config['sess_expiration']      = 10; 
$config['sess_expire_on_close'] = TRUE;
$config['sess_encrypt_cookie']  = FALSE;
$config['sess_use_database']    = FALSE;
$config['sess_table_name']      = 'ci_sessions';
$config['sess_match_ip']        = TRUE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update']  = 10;

我需要增加会话超时时间,但现在我需要检查会话时间     out工作与否。如果这10秒会话时间正常,那么我能够     增加会话时间。

先谢谢你,帮助我。

2 个答案:

答案 0 :(得分:1)

最后我找到了问题的解决方案。

以下增加或减少会话超时的方法。 1。

  ini_set('session.gc_maxlifetime', 60);

  config->config.php

  $config['sess_expiration'] = ''; //in seconds.

2

 $config['sess_time_to_update'] = '' ;//in seconds (as same in sess_expiration seconds)

3.如果您正在登录控制器和会话数据的所有控制器

$_SESSION['data'] == 'your login id or role or something

。这不会使会话数据达到会话数据。但是我们需要检查$this->session-> userdata('your id or data need to check')的检查,然后在登录成功后再需要 将值分配给会话$this->session->set_userdata('your id or something');

在检查session = $this->session->userdata()为空或零时需要session_destory(),然后需要重定向到您的主页。 另一种增加方式:

  1. 如果您的网站在apache2中运行,只有一个网站意味着我们可以直接提及    session_gc_maxtime。
  2. 我试过的这两种方式,我找到了会话时间的解决方案。对我来说工作正常。

    感谢所有人。

答案 1 :(得分:0)

如果您的数据库中没有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`)
);

使用$this->session->set_userdata($array);获取会话数据。然后它应该正常工作