范围 codeigniter 会话到期
Posted
技术标签:
【中文标题】范围 codeigniter 会话到期【英文标题】:extent codeigniter Session expiration 【发布时间】:2013-07-04 09:34:02 【问题描述】:我的 config.php 文件中有$config['sess_expiration'] = 7200;
,这意味着该会话将持续 2 小时。
默认情况下,会话是在用户登录时创建的。现在我想根据用户空闲状态进行最后一次会话。
因此,当用户在页面上处于活动状态时,我需要更新会话。
例如
每 2 分钟通过 ajax 以当前用户状态、IDLE
或 ACTIVE
对服务器进行一次 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 会话到期的主要内容,如果未能解决你的问题,请参考以下文章