在<div>我使用的页面中有一个ajax加载的内容.项目中的所有页面都在登录时受到保护.根据逻辑,如果用户将窗口保持空闲300秒或更长时间,PHP将重定向到登录页面.这在页面刷新和导航时很有用.但是我遇到的问题是,当我加载一个<div>带有AJAX输出的元素或任何元素时,有时登录页面会加载到元素中.这是因为窗口处于空闲状态,PHP服务器重定向到登录页面.我需要将主页面重定向到登录页面,而不是通过AJAX加载重定向的登录页面.想法请.

PHP检查上次活动并重定向,如果> 300秒,
if(isset($_SESSION['active_last']))
{
if((time()-$_SESSION['active_last'])>300)
{
$_SESSION['toredirect']=$_SERVER['REQUEST_URI'];
$rd_loc=BASEPATH."login/?error=timeout";
header("location: $rd_loc");
}
$_SESSION['active_last']=time();
}
Run Code Online (Sandbox Code Playgroud)
这是常见问题,因为AJAX请求会将响应附加到您要显示的位置.你需要自己处理它.这是我的解决方案,在Session过期的情况下,请求是AJAX我返回状态代码401然后这是我在全球级别处理它的方式.我已将此代码放在母版页/模板中.
$(document).ajaxError(function (event, jqxhr, settings, exception) {
if (jqxhr.status === 401) {
alert('Session is expired. Login again');
window.location.href = '../Admin/Signout.php';
}
});
Run Code Online (Sandbox Code Playgroud)