怎样防止同一帐号重复登录?
怎样防止:同一用户,开两个浏览器窗口,登录同一帐号,进行同时操作?
已解决:感谢devotedsk提出解决方法
[url=http://www.phpchina.com/bbs/viewthread.php?tid=92001&page=4&fromuid=34746#pid735969]http://www.phpchina.com/bbs/viewthread.php?tid=92001&page=4&fromuid=34746#pid735969[/url]
同时也感谢大家踊跃的讨论~
[[i] 本帖最后由 linvo 于 2008-11-20 21:46 编辑 [/i]] Impossible
除非你能区别开 “同时打开两个窗口登陆” 和 “关闭上一个窗口再打开新窗口登陆” 记录在数据库里,可以不?
回复 3# sai翔 的帖子
正解! session, 回复2#:我也感觉区别不同窗口太难了回复3#4#:能大致说下原理吗?
回复5#:session可以吗??
我现在的情况是:
前提条件是,用户进行任何操作前都要先判断该帐号是否在线。这样的话:
1、用户第一次登录后,在数据库中记录他在线(标识其在线);
2、用户重新打开新窗口用同一帐号登录,程序判断该帐号是否已在线:
a) 若不在线则正常登录(标识其在线)
b) 若在线则标识其离线,并让重新登录。
可现在问题是:
此时他在第二个窗口重新登录后,数据库中状态又变成在线,这样第一个窗口又可以正常操作了! 期待高手回答,帮顶!
是两个浏览器还是两个浏览器标签页面?
ps:cs的常见,bs的这样做不清楚
[[i] 本帖最后由 akas628 于 2008-11-19 18:02 编辑 [/i]] 其实我没明白LZ的意思。。。。 [quote]原帖由 [i]linvo[/i] 于 2008-11-19 17:52 发表 [url=http://bbs.phpchina.com/redirect.php?goto=findpost&pid=733216&ptid=92001][img]http://bbs.phpchina.com/images/common/back.gif[/img][/url]
回复2#:我也感觉区别不同窗口太难了
回复3#4#:能大致说下原理吗?
回复5#:session可以吗??
我现在的情况是:
前提条件是,用户进行任何操作前都要先判断该帐号是否在线。这样的话:
1、用户第一次登录后 ... [/quote]
晕了,不论开几个窗口,总要登录吧?登录总要查数据库吧?你在数据库里设置一个flag,用户第一次登陆,设置为true,用户登出或长时间没有操作(怎么定义,怎么使用数据库)后,就把它设置为false,当用户再次登陆时,检查对应的flag,true则不允许登录,否则登录不就行了,还有
“同时打开两个窗口登陆” 和 “关闭上一个窗口再打开新窗口登陆”是可以区分的,用js,当关闭一个窗口会引发一个时间,在那个事件处理中把用AJAX或其他把flag设置为false不就行了
"此时他在第二个窗口重新登录后,数据库中状态又变成在线,这样第一个窗口又可以正常操作了!"你在页面中设置"header('Expires: '.date('D,d M Y H:i:s',mktime(0,0,0,1,1,2000)).' GMT');
header('Last-Modified:'.gmdate('D,d M Y H:i:s').' GMT');
header('Cache-control: private, no-cache,must-revalidate');
header('Pragma: no-cache');"之类的代码就行了,这样的情况就和以前用户登出后,按“后退”还能退到管理界面一样 [quote]原帖由 [i]某个人[/i] 于 2008-11-19 18:01 发表 [url=http://bbs.phpchina.com/redirect.php?goto=findpost&pid=733254&ptid=92001][img]http://bbs.phpchina.com/images/common/back.gif[/img][/url]
其实我没明白LZ的意思。。。。 [/quote]
回复 9# syb328 的帖子
禁止登录的方法有这样的问题:用户如果临时关闭浏览器后,又想重新进去,岂不登录不了了?一直要等到规定的离线时间间隔才可以登录。
关于你提出的最后一点:
如果这样呢:第一个窗口一直停留在登录后界面,不进行其他操作。等第二个窗口成功登录后,他才继续操作。 [quote]原帖由 [i]某个人[/i] 于 2008-11-19 18:01 发表 [url=http://www.phpchina.com/bbs/redirect.php?goto=findpost&pid=733254&ptid=92001][img]http://www.phpchina.com/bbs/images/common/back.gif[/img][/url]
其实我没明白LZ的意思。。。。 [/quote]
其实就是为了实现:禁止同一帐号双开! 网页游戏吗?
回复 11# linvo 的帖子
第一个问题:没办法,关闭浏览器视为退出。不要什么都考虑到,用户体验的前提是浏览器稳定,第二个问题:你可以使用sessionid,教程网上找找吧,
回复 14# syb328 的帖子
sessionid。。。。恩~这个貌似还有点可行性,可以试试谢谢啦 放到数据库里。。Ok,搞定。。。
登录后数据库某一个字段的值为1,退出登录后,设为0,用户登录后10分钟内无操作,自动退出。
