以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [讨论]自定义用户登录,如何限制用户不能重复同时登录多个客户端  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=14777)

--  作者:hanxuntx
--  发布时间:2011/12/1 17:21:00
--  [讨论]自定义用户登录,如何限制用户不能重复同时登录多个客户端

就像QQ一样,你的账号在别处登录了,你现在的账号就被踢下线了。

如何实现,大家发表下思路。

[此贴子已经被作者于2011-12-1 17:21:40编辑过]

--  作者:狐狸爸爸
--  发布时间:2011/12/1 17:27:00
--  

后台的用户表再加一个数值列,每次登录,这个列加1,退出这个列减1。

登录的时候,检查这个列的值,如果大于0,就提示此用户已经登录。

 

因为可能存在意外退出的问题,所以还得有个清除指定用户计数的功能,只有开发者或管理员才能清除计数。


--  作者:sgs
--  发布时间:2011/12/1 17:42:00
--  

增加一个在线状态列,就OK了,登录前检测该用户是否在线就行了

 

如果要踢下线,用appendload应该是个思路,给对方发送提示,然后考虑强行退出程序


--  作者:hanxuntx
--  发布时间:2011/12/1 17:43:00
--  

狐爸,我现在的设计正如您所说的一样,我是每次记录用户登录时间,退出清空。

但是意外是经常发生的。总不能老是让管理员来解锁吧。

 

现在的问题是,

不需要人工干预,如何识别意外退出。

或者,如何确定当前用户是否已经在别处登录

 


 

 

[此贴子已经被作者于2011-12-4 9:05:56编辑过]

--  作者:hanxuntx
--  发布时间:2011/12/4 9:06:00
--  
顶起
--  作者:狐狸爸爸
--  发布时间:2011/12/4 9:18:00
--  

呵呵,在上述基础之上,再强化一下: 在线的用户,每隔60秒向后台写入当前时间,表示:我在线呢。

登录的时候,同时判断两个条件,即使有意外退出,也最多锁死60秒。

 


--  作者:hanxuntx
--  发布时间:2011/12/4 9:29:00
--  
呵呵。
能不能改成,当前登录的用户询问;“你在不在线?”
回应了表示在线,几秒不回应表示不在线


--  作者:狐狸爸爸
--  发布时间:2011/12/4 9:33:00
--  

这个不好实现。

6楼的方法,其实更加实用,你可以根据需要调整时间的长短,例如20秒。


--  作者:pyh6918
--  发布时间:2011/12/4 16:23:00
--  
以下是引用狐狸爸爸在2011-12-4 9:18:00的发言:

呵呵,在上述基础之上,再强化一下: 在线的用户,每隔60秒向后台写入当前时间,表示:我在线呢。

登录的时候,同时判断两个条件,即使有意外退出,也最多锁死60秒。

 

每隔60秒向后台写入当前时间,这个时间应该是服务器时间吧,如果是本机时间存在人为调整。

 

 


--  作者:程兴刚
--  发布时间:2011/12/4 22:47:00
--  

60秒还不够您调整时间、打开系统!

 

不过应该有更好的办法!