gpt4 book ai didi

php - 我的自动重定向登录页面方法在 PHP 中是否正确?

转载 作者:行者123 更新时间:2023-12-04 16:17:51 25 4
gpt4 key购买 nike

我有一个社区站点,用户可以在其中有很多 friend 。当显示他所有的 friend 时,我想包括他的 friend 是在线还是离线。

我的方法是,当用户登录时,在状态列“在线”上创建一个 session 并更新用户表。如果他单击注销按钮,那么我会将状态设置为“离线”。如果他没有点击注销按钮就关闭了浏览器怎么办?这是我想要做的:

session_start();
if (!isset($_SESSION['LAST_ACTIVITY'])) {
// initiate value
$_SESSION['LAST_ACTIVITY'] = time();
}
if (time() - $_SESSION['LAST_ACTIVITY'] > 3600) {
// last activity is more than 10 minutes ago
session_destroy();
//direct to a php, say this user is idle and thus status = offline
header("location: update_status.php?user=".$_SESSION['username']."&status=offline");
// den redirect them to login page
} else {
// update last activity timestamp
$_SESSION['LAST_ACTIVITY'] = time();
}

这种方式合适吗?


编辑:

如果能看到一些简单的示例代码,了解如何检查用户何时在线以及如何在用户访问页面时进行更新,这会很有帮助吗?

我是否需要在每个链接中包含 php?user=$_SESSION['userid']

最佳答案

好吧,如果您确定用户是否已注销,只需通过您的在线/离线列 - 那么用户关闭浏览器窗口(无需点击您的注销链接/按钮)仍将登录。

此处的常规方法是跟踪用户何时在您的站点中移动,存储他们最后一次导航到页面的时间。然后你设置一个预定义的常量让用户活跃(比如在过去的 15 分钟内浏览你的页面) - 然后你在你的 SQL 查询中使用它来捕获每个用户是访问者的 friend 并且一直在该网站在过去 15 分钟内。

在将时间存储为日期时间的 SQL 查询中(这是针对 MySQL 的查询),它可能类似于:

SELECT col1, col2, col3 FROM Users WHERE DATE_ADD(LastActive, INTERVAL 15 MINUTE) > NOW() AND UserIsFriendOfCurrentUser

当然,您的查询需要进行调整以更好地适应您的设置,但希望您能理解。

关于php - 我的自动重定向登录页面方法在 PHP 中是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/888507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com