>我正在使用此代码在 10 秒不活动后结束会话:
ini_set('session.gc_maxlifetime', 10);
session_start();
if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 10)) {
session_unset();
session_destroy();
}
$_SESSION['LAST_ACTIVITY'] = time();
仅当我在 10 秒不活动后刷新页面时,它才有效。如果我不刷新页面或关闭浏览器,会话将永远不会被破坏。有人可以帮我解决这个问题吗?
感谢您的建议。
现在我也使用此 javascript 代码在 10 秒不活动后刷新,效果很好。但是当我关闭浏览器会话时仍然不会被破坏。
<body onmousemove = "canceltimer()"; onclick = "canceltimer()">
<script type="text/javascript">
var tim = 0;
function reload () {
tim = setTimeout("location.reload(true);",10000);
}
function canceltimer() {
window.clearTimeout(tim);
reload();
}
</script>
10 秒后,您需要销毁会话,然后重定向它们,如下所示:
session_destroy();
header("Location: logoutpage.php");
这将"刷新"页面并销毁会话。
很抱歉我没有澄清,但你需要一个 ajax 电话,这里有一个类似的问题。我稍后会发布 ajax。不好意思。
一段时间后取消设置会话
这是阿贾克斯...将超时设置为指定的时间。再次,很抱歉没有澄清。
function refresh() {
$.ajax({
type: 'GET', // can be POST or GET
url: 'page.php' // php script to call
// when the server responds
}).done(function(response) {
console.log(response);
// call your function automatically
setTimeout(refresh, 5000);
});
}
基本上,该函数refresh
每 5000 毫秒调用一次。