0

ajax を使用し、10 秒ごとに実行して一部のデータを更新する Web アプリがあります。非アクティブ状態が 60 分間続くと、PHP セッションが終了し、ユーザーがページから追い出されるように PHP セッションを設定しましたが、このページではセッションが期限切れになることはありません。これは、Ajax 呼び出しが 10 秒ごとに実行され、サーバーが "タイムアウト」、私のセッションは、ajax を実行しない他のページで正常に動作します。このページの私の問題は、ajax が 10 秒ごとに呼び出すためだと思いますか?

私のJqueryコード:

    delay(function(){
        check();
    }, 10000 );

    function check()
    {
      $.ajax({
        dataType: "json",
        url: "lead.php",
        cache: false,
        success: function(msg){
            //Do something
        }
      });
     }
4

2 に答える 2

2

X時間後にセッションを閉じたい場合は、ajaxリクエストが行われているかどうかに関係なく、ユーザーがページでアクティビティを行っていない場合にのみ、私が使用している次のコードを使用できます:

(function () {
    // After 30 minutes without moving the mouse, the user will be redirect to logout page
    var time2refresh = 30;
    // This is how many time the user has to be inactive to trigger the countdown of 30 minutes
    var timeInactive = .5;
    // This will store the timer in order to reset if the user starts to have activity in the page
    var timer = null;
    // This will store the timer to count the time the user has been inactive before trigger the other timer
    var timerInactive = null;
    // We start the first timer. 
    setTimer();
    // Using jQuery mousemove method 
    $(document).mousemove(function () {
            // When the user moves his mouse, then we stop both timers
        clearTimeout(timer);
        clearTimeout(timerInactive);
            // And start again the timer that will trigger later the redirect to logout
        timerInactive = setTimeout(function () {
            setTimer();
        }, timeInactive * 60 * 1000);
    });
    // This is the second timer, the one that will redirect the user if it has been inactive for 30 minutes
    function setTimer() {
        timer = setTimeout(function () {
            window.location = "/url/to/logout.php";
        }, time2refresh * 60 * 1000);
    }
})();

したがって、この関数のロジックは次のとおりです。

1) ユーザーがサイトにログインします 2) 非アクティブ状態が 0.5 分 (30 秒) 続くと、30 分のカウントダウンが開始されます 3) ユーザーがマウスを動かすと、両方のタイマーがリセットされ、最初のタイマーが再び開始されます。4) 30 分経過してもユーザーがマウスを動かさない場合、ログアウト ページにリダイレクトされ、セッションが閉じられます。

于 2013-05-30T18:53:25.180 に答える