我怎么知道当用户登录时关闭浏览器选项卡在php?



是否有一种现实的方法可以知道登录用户的会话何时结束?我的意思是,当用户关闭浏览器选项卡,他的登录会话死亡

试试这样做。

客户端(即Javascript)每隔几秒钟调用一个脚本,比如user_active.php。

user_active.php包含如下内容:

$last_seen = $_SESSION['last_seen'];
if (!$last_seen) {
$last_seen = time();
}
if (time() - $last_seen > 10) { // Will execute if the time elapsed is over 10 seconds
// Your code to execute if the user not active any more
}
else {
// Show user as still active
$_SESSION['last_seen'] = time(); // Update the last time checked
}

此代码检查时间是否在最近10秒内更新。如果时间没有更新,这意味着脚本没有从客户端调用,这意味着用户已经关闭了窗口。

保持文件"轻"尽可能,因为它将被反复调用(并乘以并发用户数)。不用担心,服务器可以处理它,但不需要让它太重。

你可以在JS浏览器中卸载检查并将其发布到后端并销毁会话。我个人不会。我只会设置令牌的过期时间。

选项之一:https://www.geeksforgeeks.org/how-to-detect-browser-or-tab-closing-in-javascript/: ~:文本= % 20标签% % 20 20或% 20窗口关闭,% 20标签% 20或% 20 % 20浏览器。

window.addEventListener('beforeunload', function (e) {
e.preventDefault();
e.returnValue = '';
// Axios post to logout session here.
});

选项二:app/session.php

'expire_on_close' => true

我选择选项1的唯一原因是其他人可能想在浏览器选项卡关闭时做其他事情。

最新更新