现在,当用户访问某个页面时会启动一个会话;这工作正常。但是,如何检测用户何时离开该页面?我需要它,以便当用户离开页面时,会话被销毁。
答案 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();