以前考虑过这个问题,今天实现了一下,挺快的,从研究到开发完成差不多4个小时。有点类似QQ,二台电脑登录,一台会把另一台挤掉线,并提示其他地点登录信息。

一,实现原理

1,用户在电脑A登录,session信息存放在redis当中,并将session_id存到mysql数据库中。

2,同一用户在电脑B登录,验证完用户名和密码后,将该用户信息从数据库读出,取得用户在电脑A登录的session_id,然后在到redis中验证session是否过期。

3,如果过期,不用openfire推送提示信息。如果没有过期,php利用openfire推送消息后,在将redis中用户在电脑A中登录的session删除掉,删除后,在将用户在电脑B登录的个人信息放到session中,并将电脑B登录的session_id更新到数据库中,在这里一定要先发送推送,然后在清空session,不然用户在电脑A收不到xmpp发过来的消息。

注意:

openfire是java cms的一种,自身有数据库,您创建的用户表根openfire自带的用户表之间要建立某种联系(如:手机号,邮箱等),方便信息推送。

同一session_id肯定是在相同媒介上登录的,这个时候,也不用更新数据库和推送消息

下面简单说一下安装过程,以及要注意的地方。

二,安装所用到的工具

# yum install php php-fpm nginx mysql mysql-server redis php-redis php-devel php-pdo php-mysql

修改session存储方式:

# vim /etc/php-fpm.d/www.conf

;php_value[session.save_handler] = files   //注释掉旧的

;php_value[session.save_path] = /var/lib/php/session

php_value[session.save_handler] = redis  //添加以下内容

php_value[session.save_path] = "tcp://127.0.0.1:6379"

启动服务后,如果以下内容说明,session存redis成功了

redis telnet查看session

openfire下载地址:http://www.igniterealtime.org/downloads/

# rpm -ivh ./*.rpm   //下载的是rpm安装包

openfire启动后,然后访问http://ip:9090,一步一步配置就成了,有一点要注意就是数据库的编码。

关于redis的php操作和命令行操作,请参考:

php 同时登录怎么办,php 实现同一个账号同时只能一个人登录相关推荐

  1. 如何保证同一个账号同时只能在一个设备登录,账号自动登录

    相信很多人在移动开发中都会遇到这样的需求,当手机端的一个账号已经登录的情况下,限制这个账号在另一个设备上同时登录:账号自动登录.其实要做到这个的方法有很多,在这里我说下目前使用最多的一种方法: 在开发 ...

  2. php 实现同一个账号同时只能一个人登录

    有点类似QQ,二台电脑登录,一台会把另一台挤掉线,并提示其他地点登录信息. 一,实现原理 1,用户在电脑A登录,session信息存放在redis当中,并将session_id存到mysql数据库中. ...

  3. 如何限制一个账号同时只能一个人登录

    一直以为 限制一个账号同时只能一个人登录 就是单点登录,经过网上查询,一个账号同一时间只能一个人登录和单点登录根本不是一回事. 解决思路: 在数据库中创建一个内存表member_sessionid(即 ...

  4. 保证同一个账号同时只能在一个设备上登录

    2019独角兽企业重金招聘Python工程师标准>>> 一.使用redis存token redis key设计 access_token_{token}:{userInfoJsonS ...

  5. IM扫码登录技术专题(三):通俗易懂,IM扫码登录功能详细原理一篇就够

    本文引用了作者"大古同学"的"二维码扫码登录是什么原理"一文的主要内容,为了更好的理解和阅读,即时通讯网收录时有修订和改动,感谢原作者的分享. 1.引言 自从微 ...

  6. php 微信第三方登录demo,第三方登录 - 快速接入微信、QQ、微博等第三方登录方式 – 基于ThinkPHP和Bootstrap的极速后台开发框架...

    此插件基于FastAdmin和Thinkphp5开发的第三方登录插件,可用于对接微.微博.QQ等第三方登录,目前CMS中的小程序账号登录绑定就是基于此插件开发,在使用CMS中的小程序登录功能之前请务必 ...

  7. yii2 获取同一个账号登录的所有session_前端登录方案?这一篇就够了

    登录是每个网站中都经常用到的一个功能,在页面上我们输入账号密码,敲一下回车键,就登录了,但这背后的登录原理你是否清楚呢?今天我们就来介绍几种常用的登录方式. Cookie + Session 登录 T ...

  8. 同一个账号只能一处登录

    有些系统要求用户账号不能在多浏览器同时登录,只能在一处登录,若该账号在别的地方登录了,则之前登录的账号再次操作时,就会跳转回登录页面. 设计思路: 一个USERID只能对应一个SESSIONID; 如 ...

  9. 如何做到同一个账号同一时段只能登录一个

    在许多web项目中,需要禁止用户重复登录.一般来说有两种做法: 一是在用户表中维护一个字段isOnLine(是否在线),用户登录时,设定值为true,用户退出时设定为false,在重复登录时,检索到该 ...

  10. 关于如何在同一个浏览器用不同的session登录同个系统

    关于如何在同一个浏览器用不同的session登录同个系统 首先我们写业务系统的时候经常会遇到需要登录多个不同的账号来进行整个业务流程的审批或者其他流程,这个时候我们都知道,一个账号登录之后,当你在访问 ...

最新文章

  1. Hough 检测直线
  2. 部署承载于 Internet 信息服务中的 WCF 服务
  3. freecodecamp_freeCodeCamp.org隐私权政策:问题与解答
  4. 基本数据类型____字典
  5. Mysql主从复制操作笔记
  6. 中科软java笔试题
  7. 美国经济数据向淡带来重压 美元指数受阻于7月高点?
  8. win10计算机删除用户密码,怎么删除win10电脑上的账户密码
  9. 我的2012北京LAMP兄弟连
  10. 编译Libtorrent
  11. OpenCV4学习笔记(27)——轮廓的最大内接圆
  12. Verilog语言乒乓球机8段译码器
  13. vm服务器虚拟机如何导出报表,教程:浏览 VM 中的 Power BI 报表服务器 - Power BI | Microsoft Docs...
  14. 米家app扫描不到石头机器人_12月米家剁手清单,第二款冬天必备!
  15. 上海市新生婴儿户口登记(出生申报)
  16. 天津专升本往届生学信网学历证书电子注册备案表查询下载操作步骤
  17. [golang]简单文件上传服务
  18. 【灰色逆袭秋冬土豪金退位】
  19. UESToj 1057 秋实大哥与花 ( 线段树
  20. php模板引擎 smarty笔记

热门文章

  1. html直链如何修改成js,javascript – 使用route params直接链接到URL会破坏AngularJS App...
  2. php 打印 域名ip_php如何获取域名IP地址代码函数
  3. arm 基于qcamera实现_基于Arm平台的研华EPC—R4680工控机实现快速储物柜智能解决方案...
  4. cupsd进程_Linux进程基础
  5. ssm提交post_SSM中get和post乱码笔记
  6. c语言实验报告1华科,华科操作系统实验报告
  7. java简单图书馆管理系统_简单 图书馆管理系统 Java+Oracle
  8. java cpt_1、第十 - WEB开发进阶 - JavaSricpt 正则表达式
  9. Git:常用命令(自用)
  10. Repeater控件如何让变量自增 asp.net