1

我知道有很多关于 PHP 会话的线程,而 ajax 查询等......但我的问题是,

我有一个 ajax 网格(在页面加载后构建),我只允许在登录使用时对其进行编辑。我不介意在用户实际更改页面(然后valid_session.php被调用)之前不检查会话,但是我有一个问题,当第二天用户在同一页面上打开浏览器时 - 网格仍然是可编辑的!显然,如果我刷新页面,那么用户就会被注销。

我的页面上没有设置缓存,但浏览器(尤其是 chrome)不会在打开时重新加载它。

我不知道如何强制它在重新打开时刷新。请引导我走向正确的方向......


编辑

顺便说一句 - 我找到了一种方法来处理这个问题。我只是通过以下session_destroy();方式致电:session_destroy.phpunload()$.get()

$(window).unload(function() {
    $.get('session_destroy.php', function(data) {
      alert(data); // alerts me of some var set to 0 - meaning session is destroyed.
    });
});
4

2 回答 2

2

要主动注销用户,我认为您应该进行某种轮询,然后在会话到期时自动触发注销。或者打印一条错误消息,例如“由于会话已过期,对此页面所做的更改将不会保存”。显然,网格现在不能“通过魔法”会话已过期,您必须以某种方式告诉它。无论如何,即使网格仍然是可编辑的,也应该无法保存更改,否则存在设计缺陷(例如在保存之前未检查用户是否已登录)

于 2012-06-07T12:11:56.827 回答
1

一种解决方案是设置一个“最后刷新的”cookie,并有一个 javascriptsetInterval()来检查 cookie 是否早于 20 分钟。如果是,则 javascript 会触发刷新。当然,您仍然需要在不活动期后将它们注销。

于 2012-06-07T12:13:25.007 回答