以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [讨论]自定义用户登录,如何限制用户不能重复同时登录多个客户端 (http://foxtable.net/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秒还不够您调整时间、打开系统!
不过应该有更好的办法! |