Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在mysql中获取当前登录的用户?_Php_Mysql_Session - Fatal编程技术网

Php 如何在mysql中获取当前登录的用户?

Php 如何在mysql中获取当前登录的用户?,php,mysql,session,Php,Mysql,Session,如何获取我的网站中当前登录的用户。我有一个用于维护用户的mysql表 我不知道如何显示已登录的姓名。我认为您需要在数据库中为此设置一个标志,或者在某个临时目录中为每个用户创建一个文件。您的用户表中必须有一个字段“isOnline”,其值为0或1 每当用户登录时,您将其更新为1;每当用户注销时,您将其更新为0 当前在线用户可通过以下方式检索: SELECT * FROM `users` WHERE `isOnline`='1' 您可以创建列名isOnline,并在用户联机时将其设置为true。然

如何获取我的网站中当前登录的用户。我有一个用于维护用户的mysql表


我不知道如何显示已登录的姓名。

我认为您需要在数据库中为此设置一个标志,或者在某个临时目录中为每个用户创建一个文件。

您的用户表中必须有一个字段“isOnline”,其值为0或1

每当用户登录时,您将其更新为1;每当用户注销时,您将其更新为0

当前在线用户可通过以下方式检索:

SELECT * FROM `users` WHERE `isOnline`='1'

您可以创建列名isOnline,并在用户联机时将其设置为true。然后按isAvailable列查询它

select * from users where isOnline = 'Y';

不要像其他人建议的那样使用
isOnline
字段。改为使用
lastSeen
字段。您可以在该字段中放置时间戳,并在每个页面视图上更新它

如果您想轻松使用系统,可以每隔几分钟更新一次(在用户会话中使用变量
$lastUpdate
,该变量包含上次更新
lastSeen
)的时间戳)

要查找“在线”用户,您可以选择在过去X分钟内(例如10分钟)最后一次看到的所有用户

您无法知道在线用户的确切数量,因为您无法知道用户是否正在查看您的页面,或者他/她是否已经关闭了该页面。无论如何,像这样的解决方案是一个很好的近似


每小时或每天,取决于你有多少访客,您可以运行一个过程来删除旧条目。

只需在您的用户表中创建一个字段,该字段具有适合您的任何名称,如
status
,并使用用户登录和注销更新该字段,登录时使用值
true
,注销时使用值
false
,只需检查将为您提供所有登录用户的真实值…

我的方法是使用带有用户会话令牌的表。每次用户访问站点时,会话记录中的时间戳设置为now。若会话在一段时间内未被触发,它将过期并从表中删除(通过cronjob或在某些用户请求中作为垃圾收集)。注销时相同。结构是sessiond,用户id,最后一次看到。您只需将此表与用户连接以获取他们的姓名。
尽管如此,它可以只使用一个表来完成-不仅要存储标志
isOnline
,还要存储一些时间戳,以使刚刚离开您的站点而未注销的用户过期。

这是一个太普通的问题,至少发布用户表的结构…我们希望您自己尝试解决这个问题,而不是要求社区为您找到一个完整的解决方案。当您有一些代码向我们展示您的一些努力时(即使是错误的),请更新您的问题和标志以重新打开。谢谢。如果用户没有注销,只是离开页面怎么办?永远在线:)@entek是的,你是对的。我已经试过使用一个标志栏。如果用户没有注销,只是离开了页面怎么办?所以除此之外,您还需要一些javascript或类似的东西来检查用户是否仍在您的站点上。也许你会发现一些东西哦,忘了这一点,斯蒂夫洛的解决方案对我来说很合适是的,他的解决方案很好。我的方法很粗糙:)和阿南的帖子上的问题一样:如果用户不注销并离开页面怎么办?@stivlo的解决方案要好得多:)