我用PHP实现一个账号只能同时在同一个设备登录,注意,不是同一个IP。
之前是在MYSQL的表中加了个显示是否登录了的字段,若登录了设置为1,退出设置为0.
但后来发现,强行关闭浏览器的时候就没办法把这个字段设置为0了!
想了很久没想出解决方案,后来在网上看到好像可以用redis来实现,于是这两天开始学redis。但发现这样学下去也没有什么思路啊。
所以上来请教一下,请问有谁有经验的可以说一下怎么实现吗?谢谢!祝大家中秋节快乐!
5个回答
答案对人有帮助,有参考价值0答案没帮助,是错误的答案,答非所问
采纳
如果是 Redis 的话, 可以使用 hash 结构来存储账户登入信息.
hash 的结构: key field value
具体实现:
hash 结构中, 使用相同的 key field 写入数据时, 会覆盖掉历史数据
Redis> hset key field Test
Redis> hget key field
"Test"
Redis> hset key field Run
Redis> hget key field
"Run"
这样就能实现单个账户的需求, 指定一个 key 用来存储账户登入信息, field 就是每个账户的主键, 那么每次登录都会将上一次的登入信息清空, 之前的登入信息就失效了, 这样就能达到之前的登录状态失效.
如果考虑到不同设备的登录, 可以将 field 变为 devicename-uid 这种形式, 保证一个设备只能够有一个登录信息存在.
答案