我在连接到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"它更多地创造了一个新的会议。
答案 0 :(得分:0)
您的会话将持续到期,请更改以下设置:
来自:
$config['sess_expiration'] = 0;
致:
$config['sess_expiration'] = 7200; // expires in 2 hours