2013-07-06 72 views
3

我有$config['sess_expiration'] = 7200;我的config.php文件,这意味着最后在2小时内该会话。程度笨会话过期

默认情况下,会话创建了用户登录。现在我想要基于用户IDLE状态的最后一个会话。

因此,当用户在网页上的活跃,我需要更新会话。

Ex。

通过Ajax甲POLL到服务器每隔2分钟与当前用户状态,IDLEACTIVE

如果状态是ACTIVE然后我想程度/更新/更新会话超时,用于从AJAX另外2小时呼叫。

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

“您当前的会话需要到期,你想续约吗?“

如果用户点击YES的话,我想某种程度上会话2小时,否则我将发送注销命令。

所以现在的问题是:如何续签/更新/程度的会话超时programically?

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

我使用PHP 5,笨2.x中,Bitauth(用户认证)。

感谢

回答

5

只要您可以使用$config['sess_time_to_update'] = 30; //seconds如果用户处于闲置状态,并session expiration时间结束,即$config['sess_expiration'] = 7200;然后用户点击它会自动退出,因为CI检查每个会话的任何链接,将更新会话超时要求session expiration时间结束是否超过过期时间,然后你的会话被破坏。如果用户在一小时后遇到任何请求,那么您的sess_expiration更新sess_expiration可以说从现在到两个小时。 默认情况下,CI创造了一个新的会话ID定义的时间间隔$config['sess_time_to_update'] = 30;即每30秒钟新的会话ID将被创建

对于深后仔细观察,你可以看到在图书馆sess_update()Session.php是更新会话功能因此,如果您没有使用database会话,则您有一个好主意,然后CI将信息存储在cookie中,否则它会将数据存储在ci_sessions表中