PHP-网站限制用户同时登陆

发布于 2016-12-11 13:50:15 字数 29 浏览 1138 评论 5

网站后台限制用户在多电脑、多浏览器同时登陆?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

浮生未歇 2017-10-11 11:50:04

http是无状态的.只能间接判断

对于web.qq.com这种实时要求高的web应用可以"实时"轮询.用户登录时,可以判断clientA的hashTable[uid].session最后访问时间.如果最后访问时间在轮询时间范围内(比如5s),说明用户之前的会话还没有结束.
对于实时要求不高web应用,因为没有轮询.用户突然关闭了clientA(比如kill浏览器).30分钟后,用户又在clientB登录,服务器最多能知道30分钟前用户还有sessionA的活动但不能判断这个session是否结束.我想可以暴力的清除sessionA

虐人心 2017-07-02 13:13:59

由于HTTP是无状态的连接,所以要100%做到这个限制可能会有些困难,提供一些思路吧:
1. 用户如果登录了,就使用一个大的Hash表,记录下来sessionid和用户id的对照信息(当然了,session里面同时也可以放置用户信息)
2. 当用户点击“退出”的时候,清除hash表中这个用户的记录
3. 如果用户请求登录,检查hash表中的用户id和sessionid是否是当前的用户id和sessionid,如果相同,则表示同一个终端上来的,否则就视为不同的终端
4. 在Java中有SessionListener可以监听session的销毁,不知道PHP是否有这样的接口可用。当session销毁的时候,同时清理hash表中的对应记录
5. 说实话,一个website设置这样的功能其实很让人烦的……所以,请楼主三思啊!

灵芸 2017-05-29 00:01:36

帝国cms,后台有这方面的使用。

用户数据表,建立一个登录认证随机字段。
用户登录的时候,生成一个随机值,生成规则:随机值 = md5(IP地址+时间戳+客户端环境+登录用户信息)。
登录成功,生成随机之后,修改该登录用户数据表登录认证随机字段的值,同时也将这个随机值,通过cookies保存到用户浏览器中。
每次操作都从数据库读取给用户的登录认证随机值和保存在coolies中的随机值比较是否相等。
如果相等,说明当前只有1个人使用,如果不等的话,就提示有其他人登录,你这边直接就退出了。

浮生未歇 2017-04-17 23:19:48

这个很简单,将session存储在数据库中,用户登录的时候先去数据库中根据用户名查询session记录,如果已经存在说明登录过了.数据库中sessionid为主键,同时包括浏览器的useragnet,还有登录的ip等数据。
当然数据库中的session记录要有定时删除机制.

归属感 2017-03-02 02:13:59

直接数据库里边一个字段,表示在线状态,登陆处理的同时,更改数据库状态,再次登陆的时候处理状态就好了。但是这种,无法处理url直接带上了sessionid的情况。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文