0

我正在使用 php/ajax 中的 api,并且我在每个页面中都包含测试,如果用户在一段时间后由于不活动而没有注销。它有效,但在某些时候我遇到了麻烦。这是故事:

我有一个名为 index.php 的文件。Index.php 有一个 div - 我们将其命名为“div”。它还有一些按钮——我们将其命名为“新建”和“修改”。当我按下按钮时,文件 new.php 和 modify.php 的主体通过 ajax 方法加载到“div”。到现在为止还挺好。但是当用户在一段时间内变得不活动时,它应该注销他。它确实如此。但不幸的是——它发生的原因很清楚——注销页面没有打印到 index.php 中,而是打印到“div”的正文中。这很容易理解——按下“新建”按钮会将我移至 new.php。New.php 检查我是否已登录 - 我没有登录,所以它会将我重定向到 logout.page,因此 new.php 生成注销页面,它成为我的“div”的主体。这是问题:如何重定向整个页面(index. php) 注销页面,如果我已注销并且未在 div 中打印它。请记住,按“新建”按钮不会刷新 index.php,因为我使用 ajax。它只会刷新我的 div。甚至可能吗?

4

3 回答 3

2

使用 javascript 重定向怎么样?你真的不需要关心“黑客”用户,因为他们没有登录就没有任何权限,所以只需重定向普通用户:

<script language="JavaScript">document.location="/logout.php";</script>
于 2012-04-27T21:17:10.523 回答
2

不要在 中进行重定向new.php,而是让 PHP 脚本在用户注销时返回一些特定值,分析 AJAX 调用中的输出,并在必要时通过 javascript 进行重定向。

换句话说:

  • 如果new.php成功做你通常做的事
  • 如果new.php返回一些“身份验证失败”状态,做你的重定向

最好的方法是将 AJAX 响应封装在 JSON 对象中,这样您就可以同时拥有数据和响应代码,以便在 javascript 端更轻松地进行分析。

于 2012-04-27T21:17:35.227 回答
1

试试这个 - 将“3000”更改为任意毫秒数(例如,如果是 15 分钟,请将其设置为“900000”)

<script>

(function(){
  setTimeout( function(){
      window.location = "www.yourawesomesite.com/logout";
    }
  ,3000)
})();

</script>
于 2012-04-27T21:19:25.503 回答