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

时间:2011-11-01 10:03:56

标签: php mysql session

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

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

6 个答案:

答案 0 :(得分:6)

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

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

要查找“在线”用户,您可以选择最后X分钟内lastSeen的所有用户,例如10分钟。

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

每小时或每天,根据您拥有的访问者数量,您可以运行删除旧条目的流程。

答案 1 :(得分:2)

您的users表中必须有一个字段'isOnline',其值为0或1。

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

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

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

答案 2 :(得分:1)

我的方法是使用具有用户会话令牌的表。每次用户访问会话记录中的站点时间戳都设置为现在。如果会话在一段时间内未被触及,则会过期并从表中删除(通过cronjob或在某些用户请求中作为垃圾回收)。注销时相同。结构为sessid, user_id, last_seen_ts。您可以与用户一起加入此表以获取其名称。 虽然,它只能使用一个表来完成 - 不仅存储标记isOnline,还存储一些时间戳,以使刚刚离开您网站的用户不会注销。

答案 3 :(得分:0)

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

进行查询
select * from users where isOnline = 'Y';

答案 4 :(得分:0)

只需在您的用户表格中创建一个字段,其中包含任何适合您的status名称,并在登录时使用值true进行用户登录和注销更新。{{ 1}}注销时,只需检查将为您提供所有登录用户的真实值...

答案 5 :(得分:-1)

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