extent codeigniter会话到期

时间:2013-07-06 12:50:39

标签: php javascript codeigniter jquery session

我的config.php文件中有$config['sess_expiration'] = 7200;,这意味着会话持续2小时。

默认情况下,会话是在用户LOGIN上创建的。现在我想基于用户IDLE状态持续会话。

因此,当用户在页面上处于活动状态时,我需要续订会话。

实施例

使用当前用户状态IDLEACTIVE

,通过ajax每2分钟向服务器发送一次POLL

如果状态为ACTIVE,那么我想在ajax调用中延长/续订/更新会话超时另外2小时。

事实如果状态为IDLE,我将在网页上运行计时器,并在达到超时(2小时)之前,我需要向用户显示警告==>

“您当前的会话即将到期。您要续订会话吗?”

如果用户点击YES,那么我想将会话延长2小时,否则我会发送一个LOG OUT命令。

所以问题是:如何以编程方式更新/更新/扩展会话超时?

还有其他更好的解决方案。

我使用的是PHP 5,Codeigniter 2.x,Bitauth(用户身份验证)。

由于

1 个答案:

答案 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