通过jquery在60秒前为put会话打开更多选项卡时出现php cookies和会话问题过期警报
我正在配置文件中使用下面的代码通过jquery在60秒前为put会话打开更多选项卡时出现php cookies和会话问题过期警报,php,session,cookies,Php,Session,Cookies,我正在配置文件中使用下面的代码 if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 600)) { session_unset(); // unset $_SESSION variable for the run-time session_destroy(); // destroy session data in storage }
if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 600)) {
session_unset(); // unset $_SESSION variable for the run-time
session_destroy(); // destroy session data in storage
}
$_SESSION['LAST_ACTIVITY'] = time();
上述代码在停用10分钟后工作,会话将被破坏
当用户登录时,将设置cookie,如
setcookie("loggedin", "true", time()+600);
在jquery中,我设置了会话时间:600秒
set warning alert set using jquery : 60 seconds[60 seconds before expire session show alert 60]
(您的会话将在60秒后过期!可以重新启动会话[页面刷新])
打开一个选项卡就可以了。如果打开第二个选项卡页面刷新会话并重置Cookie,则从600秒开始。但上一个选项卡持续时间低于600秒,警告警报变早。
(Actullay页面刷新仅重置Cookie和会话。但我们无法引用prev选项卡)
如何解决这些问题
请帮忙 在显示警告之前,发出AJAX请求以验证最后一个活动,如果剩余时间超过60秒,则延迟警报 下面是非常基本的示例代码 time_left.php:
session_start();
echo time() - $_SESSION['LAST_ACTIVITY'] - 600;
jQuery:
$.ajax('time_left.php').done(function(t) {
if (t <= 60) {
// 60 seconds or less left
}
else {
// more than 60 seconds left, reset timer for (t - 60) seconds
}
});
$.ajax('time\u left.php').done(函数(t){
如果(t)是有效的。但是可以使用setInterval()函数同时警告会话过期警告所有选项卡。我不理解这个问题,您需要使用setInterval来设置代码在一定时间后运行。