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 に答える