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

时间:2011-07-14 16:41:43

标签: php

现在,当用户访问某个页面时会启动一个会话;这工作正常。但是,如何检测用户何时离开该页面?我需要它,以便当用户离开页面时,会话被销毁。

5 个答案:

答案 0 :(得分:3)

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

相关文章:Can you fire an event in JavaScript before the user closes the window?

答案 1 :(得分:2)

如果您只担心网站中的网页:

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

答案 2 :(得分:1)

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

没有其他方法可以确定用户是否离开了您的网页。

答案 3 :(得分:0)

一般情况下不可能

答案 4 :(得分:0)

这不是互联网如何运作的;您可以尝试使用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();