我的config.php文件中有$config['sess_expiration'] = 7200;
,这意味着会话持续2小时。
默认情况下,会话是在用户LOGIN上创建的。现在我想基于用户IDLE状态持续会话。
因此,当用户在页面上处于活动状态时,我需要续订会话。
实施例
使用当前用户状态IDLE
或ACTIVE
如果状态为ACTIVE
,那么我想在ajax调用中延长/续订/更新会话超时另外2小时。
事实如果状态为IDLE
,我将在网页上运行计时器,并在达到超时(2小时)之前,我需要向用户显示警告==>
“您当前的会话即将到期。您要续订会话吗?”
如果用户点击YES
,那么我想将会话延长2小时,否则我会发送一个LOG OUT命令。
所以问题是:如何以编程方式更新/更新/扩展会话超时?
还有其他更好的解决方案。
我使用的是PHP 5,Codeigniter 2.x,Bitauth(用户身份验证)。
由于
答案 0 :(得分:5)
如果用户处于空闲状态且$config['sess_time_to_update'] = 30; //seconds
时间结束即session expiration
,那么只需使用会更新会话超时的$config['sess_expiration'] = 7200;
,然后用户点击任何会自动注销的链接,因为CI检查每个请求的会话,session expiration
时间是否超过到期时间,然后会话被销毁。如果用户在一小时后点击了任何请求,那么sess_time_to_update
会更新sess_expiration
,从现在开始说两个小时。
默认情况下,CI在定义的时间间隔$config['sess_time_to_update'] = 30;
中创建一个新的会话ID,即每隔30秒创建一个新的会话ID
如果仔细观察,您可以看到库Session.php
中的sess_update()
是更新会话的功能,因此如果您不使用database
,您可以很好地了解CI的作用会话然后CI将信息存储在cookie中,否则它将数据存储在ci_sessions
表