如何检查用户是否离开了某个页面



现在,当用户进入一个页面时,会话就开始了;工作得很好。但是,我如何检测用户何时离开该页面呢?我需要它,以便当用户离开页面时,会话被销毁。

您将无法使用PHP来检测用户离开页面,但是您可以通过javascript在unload事件上发送ajax请求来销毁该用户会话。

相关文章:你能在用户关闭窗口之前在JavaScript中触发一个事件吗?

如果你只担心你的网站中的页面:

if($_SERVER['REQUEST_URI'] !== 'page_with_session.php'){
    session_destroy(); // Kill session for all pages but page_with_session.php
}

HTTP是一个异步协议。与用户会话的异步连接在一定时间内有效。这个时间也称为到期时间。因此,会话有一个到期时间。当用户访问您的页面时,此时间将被更新,如果他在此时间范围内没有任何操作,则该时间将无效(销毁)。

没有其他方法可以确定用户是否离开你的页面。

一般情况下是不可能的

互联网并不是这样运作的;你可以尝试用onbeforeunload()发送信号,但这并不能保证。由于会话垃圾只是一个概率,我不知道你的浏览量是什么样子,我建议把这样的东西放在一个公共文件中:

if (isset($_SESSION['last_seen']) && $_SESSION['last_seen'] < time() - 3600) {
    session_unset();
    session_destroy();
    header('Location: logout_or_whatever.php');
    exit;
}
$_SESSION['last_seen'] = time();

最新更新