会话ID刷新后Codeigniter userdata丢失[CodeIgniter 3.0]

时间:2015-02-18 21:26:54

标签: php mysql codeigniter session

我在连接到MySQL数据库的网站上使用Codeigniter的会话库。 我有自己的库,可以创建用于登录检查的会话。

基本上,当我登录i登录时,我在会话cookie的userdata中登录。 (然后还有其他检查可以获得某种安全性)

$this->session->set_userdata('logged_in','1');

现在,只要会话ID刷新(标准300秒),我的所有用户数据都会消失。我在数据库中购物,会话ID没有得到更新,只是创建了一个新的。

我使用Codeigniter 3.0并且我不确定那些应该是那样的。

编辑:

我的config.php(会话内容)

$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 0;
$config['sess_save_path'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

cookie Stuff

$config['cookie_prefix']    = '';
$config['cookie_domain']    = '';
$config['cookie_path']      = '/';
$config['cookie_secure']    = FALSE;
$config['cookie_httponly']  = FALSE;

基本上会发生以下事情:

我使用id 123获取Session。我将userdata logged_in = 1分配给会话。 全部保存在DB中。 5分钟后。 (或配置文件中定义的时间)

$config['sess_time_to_update'] = 300;

我在浏览器中进入了一个没有userdata的id为137的新会话。 具有userdata logged_ind = 1的会话123仍然在数据库中,与新创建的会话137一起。

因此,而不是更新" sess_time_to_update"它更多地创造了一个新的会议。

1 个答案:

答案 0 :(得分:0)

您的会话将持续到期,请更改以下设置:

来自:

$config['sess_expiration'] = 0;

致:

$config['sess_expiration'] = 7200; // expires in 2 hours