javascript – 如何停止AJAX调用以保持PHP会话存活

我使用Cake
PHP在我的网站上有一个身份验证系统.它使用PHP Sessions进行此操作.

我所拥有的是一个AJAX调用(在每分钟运行的setInterval内)到一个函数,它检查用户是否仍然登录.如果它返回false,那么Javascript将获取当前URL并尝试重定向它们,将它们重定向到登录页面.理论上这是有效的,因为它主动要求用户重新登录而不是举行陈旧的会话,只要他们点击一下就会要求他们登录.我的问题是我的AJAX调用使会话保持活跃状态​​.所以永远不要退出(我们不想要)

我可以在CakePHP中使用任何其他方法来阻止这种情况发生吗?

最佳答案 在检查会话的有效性时,将& ajax =(任何)添加到查询字符串.

然后,更改您的PHP会话代码:

session_start();
if(!isset($_GET["ajax"])) $_SESSION["lastactivity"] = time();
if(now() - $_SESSION["lastactivity"] > 3600){ //3600 seconds
    header("Location: login.php?url="+urlencode(str_replace("&ajax=", "", $_SERVER["REQUEST_URI"])));
    //Example:
    // Location: login.php?url=/sensible/secret.php?mode=show&hide=nothing
    exit;
}
点赞