3

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

默认情况下,会话是在用户登录时创建的。现在我想根据用户空闲状态进行最后一次会话。

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

前任。

通过具有当前用户状态的 ajax 每 2 分钟对服务器进行一次 POLL,IDLEACTIVE

如果状态是,ACTIVE那么我想从 ajax 调用再延长/更新/更新会话超时 2 小时。

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

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

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

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

还有其他更好的解决方案吗?

我正在使用 PHP 5、Codeigniter 2.x、Bitauth(用户身份验证)。

谢谢

4

1 回答 1

5

简单地说,如果用户空闲并且时间结束,您可以使用$config['sess_time_to_update'] = 30; //secondswhich 将更新会话超时,即,然后用户点击任何链接,它将自动注销,因为 CI 检查每个请求上的会话是否超过过期时间时间那么你的会话被破坏了。如果用户在一小时后点击任何请求,那么您的更新可以说从现在到两个小时。默认情况下,CI 在定义的时间间隔内创建一个新的会话 ID,即每 30 秒后将 创建一个新的会话 IDsession expiration$config['sess_expiration'] = 7200;session expirationsess_time_to_updatesess_expiration$config['sess_time_to_update'] = 30;

为了深入了解,您可以看到Session.phpsess_update()中的函数是更新会话的功能,因此您很清楚 CI 在不使用database会话时会做什么,然后 CI 将信息存储在 cookie 中,否则它将数据存储在ci_sessions表中

于 2013-07-06T14:58:04.330 回答