首页 文章

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

提问于
浏览
1

我在我的网站上使用连接到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;

Cookies 的东西

$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

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

    从:

    $config['sess_expiration'] = 0;
    

    至:

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

相关问题