0

我正在使用此代码在 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 秒不活动后刷新页面时才有效。如果我不刷新页面或关闭浏览器,会话将永远不会被破坏。有人可以帮我解决这个问题吗?

4

2 回答 2

0

感谢您的建议。

现在我也在使用这个 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>
于 2013-11-01T23:04:34.700 回答
-1

10 秒后,您需要销毁会话,然后重定向它们,如下所示:

session_destroy(); 
header("Location: logoutpage.php");

这将“刷新”页面并销毁会话。

抱歉我没有澄清,但你需要一个 ajax 调用,这里有一个类似的问题。稍后我将发布 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 毫秒调用一次。

于 2013-11-01T13:49:28.597 回答