同一个账户同时登录mysql_一个账号同时只能在同一个设备上登陆

本文探讨如何防止同一个账号在多个设备上同时登录。提出了使用Redis的Hash结构或MySQL配合过期时间字段来实现。通过覆盖Hash中的设备信息或更新MySQL中的登录状态来确保单设备登录。
摘要由CSDN通过智能技术生成

我用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 这种形式, 保证一个设备只能够有一个登录信息存在.

答案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值