为了账号安全,请及时绑定邮箱和手机立即绑定

如何设计一个帐户只能一个终端登陆?

如何设计一个帐户只能一个终端登陆?

PHP
紫衣仙女 2019-03-18 15:23:27
如题:我自己的逻辑:1.在用户表中新增一个字段 is_online(是否已登陆 0 未登陆 1登陆)2.登陆时判断此字段是否为1 ,退出时,更新此字段为0 如果用户非正常退出的情况 (关闭浏览器等) 这个情况就会没办法更新is_online字段 目前想到一个方法:但是没有完全理解 就是将session_id存入数据库 登陆时判断数据库中的session_id 在服务器中是否存在? 这个具体如何操作 请教一下
查看完整描述

5 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

每次登陆后生成一个有时效token,保存在服务器端和客户端,每次鉴权时只验证这个token
这样新的登录事件发生后,由于token改变,以前的有效登录就自动失效了

查看完整回答
反对 回复 2019-03-18
?
呼如林

TA贡献1798条经验 获得超3个赞

登陆时,将session_id存入数据库 鉴权时判断 数据库中的session_id在服务器中是否还存在

通过session_save_path()获取session_id在服务器中的目录路径

//判断数据库中用户是否登陆
if($admin['is_online']) {
    //如果用户非正常退出时, 判断session_id是否存在 如果存在 提示已经登陆 ( session默认30分钟失效)
    if(file_exists(session_save_path().'\\'.$admin['session_id'])) {
        ajaxmsg('此账号已在其它地方登陆,请先退出后再登陆',0);
    }
}
查看完整回答
反对 回复 2019-03-18
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

我们网站是用的memcache共享session做到的

查看完整回答
反对 回复 2019-03-18
  • 5 回答
  • 0 关注
  • 617 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信