现在,当用户进入一个页面时,会话就开始了;工作得很好。但是,我如何检测用户何时离开该页面呢?我需要它,以便当用户离开页面时,会话被销毁。
您将无法使用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();