如何在我的网站中获取当前登录的用户。我有一个用于维护用户的mysql表。
我不知道如何显示已登录的姓名。
答案 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)
我认为您需要在数据库中为其创建一个标志,或者为某个临时目录中的每个用户创建一个文件。