Как я могу уничтожить сеанс, когда пользователь закрывает страницу? - PullRequest
0 голосов
/ 31 января 2019

Эти коды работают, но когда я щелкаю куда-то (ссылку или кнопку), перенаправляется на logout.php

var s= 0;
jQuery(function(){
    jQuery(window).bind('beforeunload', function () {
    if (s == 0) {
        $.ajax({
                async: false,
        url: 'logout.php'
        });
    }
    s++;
    });
});

1 Ответ

0 голосов
/ 31 января 2019

Вы можете поместить в свой сеанс переменную с time () внутри и использовать ее в качестве предела короткого срока действия, и пока пользователь находится внутри вашей страницы, совершайте постоянные ajax-вызовы php, который обновляет срок действия.В верхней части вашей страницы поместите:

session_start();
if(isset($_SESSION['expiry']))
    if(time() > $_SESSION['expiry']){
        session_destroy();
        header("Refresh:0");
        die();
    }
$_SESSION['expiry'] = time()+20;

keep_alive.php

session_start();
$_SESSION['expiry'] = time()+20;

И в свой js ping keep_alive.php с ajax каждые 10 секунд.Если пользователь закрывает страницу и быстро ее не открывает, он теряет сеанс

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...