范围 codeigniter 会话到期

Posted

技术标签:

【中文标题】范围 codeigniter 会话到期【英文标题】:extent codeigniter Session expiration 【发布时间】:2013-07-04 09:34:02 【问题描述】:

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

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

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

例如

每 2 分钟通过 ajax 以当前用户状态、IDLEACTIVE 对服务器进行一次 POLL

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

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

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

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

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

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

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

谢谢

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于范围 codeigniter 会话到期的主要内容,如果未能解决你的问题,请参考以下文章

CodeIgniter:将最后一个活动存储到数据库中

手动设置会话过期时间-CodeIgniter

nginx配置CI重写规则,codeigniter

使用 codeigniter ci_marchant_Lib 库的 PayPal 定期付款

春季安全会话到期

会话到期时网站通常如何自动注销用户?