一尘不染

我如何停止AJAX调用以使PHP会话保持活动状态

ajax

我的网站上使用CakePHP拥有身份验证系统。为此,它使用PHP会话。

我所拥有的是对函数的AJAX调用(在setInterval中每分钟运行一次),该函数检查用户是否仍在登录。如果返回false,则Javascript将获取当前URL并尝试将其重定向,
turn将他们重定向到登录页面。从理论上讲,这是可行的,因为它会主动要求用户重新登录,而不是进行陈旧的会话,后者只会要求用户单击某些内容后立即登录。我的问题是我的AJAX呼叫使会话保持活动状态。所以永远不要注销(我们不想要)

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


阅读 283

收藏
2020-07-26

共1个答案

一尘不染

&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;
}
2020-07-26