javascript - 我怎样才能停止 AJAX 调用保持 PHP session 事件

标签 javascript ajax cakephp php

我的站点上有一个使用 CakePHP 的身份验证系统。为此,它使用 PHP session 。

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

有什么我可以在 CakePHP 中做的或者我可以用来阻止这种情况发生的任何其他方法吗?

最佳答案

在检查 session 的有效性时,将 &ajax=(任何内容)添加到查询字符串中。

然后,更改您的 PHP session 代码:

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;
}

关于javascript - 我怎样才能停止 AJAX 调用保持 PHP session 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6759058/

相关文章:

javascript - 使用ajax抓取表单数据

php - fancybox 上的图像翻转效果

php - 登录用户访问其他用户配置文件

javascript - 脚本在 html 上或保存为 .js 文件时均不起作用

javascript - ajax 调用后更新动态生成的列表项(使用 PHP 生成)

cakephp - 在本地开发环境中禁用 CakePHP ACL/ACO 检查

javascript - 如何使用 JS 事件监听器使用 HTML 表单的输入来更改 HTML 元素的背景颜色

javascript - 使用 JQuery UI 自动完成显示不显示结果

javascript - Symfony 表单 AJAX 返回空对象

php - CakePHP:如何将 Containable 用于嵌套的 HABTM 模型