我知道有很多关于PHP会话的线程,而ajax查询等... 但我的问题是,
我有一个ajax网格(在页面加载后构建),我只允许在登录使用时进行编辑。我不介意在用户实际更改页面之前不会检查会话(然后调用valid_session.php
),
但是我有一个问题,当第二天用户在同一页面上打开浏览器时 - 网格仍然可以编辑!很明显,如果我刷新页面,那么用户就会被注销。
我的网页上没有设置缓存,但浏览器(特别是chrome)不会在打开时重新加载。
我无法理解如何在重新打开时强制刷新。请引导我走向正确的方向......
修改
BTW - 我找到了解决这个问题的方法。我只需通过session_destroy();
在session_destroy.php
上的unload()
致电$.get()
:
$(window).unload(function() {
$.get('session_destroy.php', function(data) {
alert(data); // alerts me of some var set to 0 - meaning session is destroyed.
});
});
答案 0 :(得分:2)
要主动注销用户,我认为您应该进行某种轮询,然后在会话过期时自动触发注销。或者打印一条错误消息,例如“当会话已过期时,不会保存对此页面所做的更改”。 显然网格现在不能“通过魔法”会话已经过期,你必须以某种方式告诉它。在任何情况下,即使网格仍然可以编辑,也不可能保存更改,否则存在设计缺陷(比如在保存之前不检查用户是否已登录)
答案 1 :(得分:1)
一种解决方案是设置“最后刷新”的cookie,并使用javascript setInterval()
检查cookie是否早于20分钟。如果是,则javascript触发刷新。当然,您仍需要在不活动期后将其注销。