用户关闭页面时如何销毁会话?

时间:2019-01-31 15:48:22

标签: php jquery ajax

这些代码有效,但是当我单击某处(链接或按钮)时,重定向到logout.php

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

1 个答案:

答案 0 :(得分:0)

您可以在会话中放入一个带有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中每10秒用ajax ping一次keep_alive.php。如果用户关闭页面但没有快速重新打开页面,则会话将丢失