专栏首页程序员的碎碎念php防止用户重复登录

php防止用户重复登录

先来理解一下session的几个设置:

ini_set('session.auto_start',0);

设置关闭session的自动启动

ini_set('session.cookie_lifetime',0);

设置session在浏览器关闭时失效,session默认情况下是这样子的,无需在设置

ini_set('session.gc_maxlifetime',3600);

设置session在浏览器未关闭时的持续存活时间

大概知道上面的几个设置,那么我们开始理解下今天的内容啦。每当一个用户登一个账号时候,他打开浏览器就会自动生成一个session_id(有效时间内是唯一的),然后我们把这个唯一的id存入到user表的去(每登录一次就更新一次当前账号user表中的session_id的值)。这样,在登录后的所有界面都需要判断,当前浏览器的session_id()与数据库的user表的session_id是否一致,如果不一致,则显示当前账号已在线,你需要再次登录再可以顶掉他的登录。(就是每一次只能一个用户登录,后面登录的用户会挤掉前面登录该账号的用户)

详细,我们看下代码吧:(其他无关本次推文代码的代码,我就不细说啦)

第一个框:获得当前打开浏览器session的id,为下面插入、更新数据库里唯一的session_id做准备

第二个框:判断,数据库里的session_id与当前session_id是否相等,若不相等,则更新当前数据库里的session_id,若相等,直接返回3到前端ajax

在index.php界面下,这个框,表示判断当前session_id()与数据库的session_id是否相等,如果不相等,则表示当前账号已经有登录,且session_id不相等,需要跳转重新登录。

效果展示:(我已经写入莞工微博里了,请看)

(我已经在火狐浏览器登录了一个账号,当我在360浏览器登录时,会显示如登录成功,然后我在火狐浏览器上操作发布微博,会显示如下)

这样就实现了同一个账号,只能一个用户登录。

题外话,这个周六,我给我的“莞工微博”添加了后台管理系统:

在这里,后台的所有数据都可以显示在这里,在往后会添加更多的功能:如更新前端界面,数据的导入导出等功能,欢迎访问哦:http://www.bennyweb.top

本文分享自微信公众号 - 程序员的碎碎念(gh_53e607dd4782),作者:benny'

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-11-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • π框架之实战项目(代码分享)

    通过之前的学习,本文主要介绍一下实现用户的登录、注册等功能的接口代码,让大家通过小实战来感悟phalapi框架的神奇之处。(以下代码均可右滑) ? 获取参数规则...

    benny
  • 微信消息加解密Mcrypt在php7.2中废弃与open_ssl替代解决方案

    之前在接入微信公众号相关的接口,对微信消息加解密操作时,下载了官网上的php demo下来。

    benny
  • 小程序(公众号)授权给第三方平台流程梳理和实现

    在第三方平台应用上点击授权的时候会获取授权的预授权码(preauthcode),有效期为10分钟。

    benny
  • WebDriver 的协议标准 W3C

    https://github.com/Jason-Chen-2017/go-selenium

    一个会写诗的程序员
  • sessionid如何产生?由谁产生?保存在哪里?

    面试问道这个我居然不知道怎么回答,当然也是因为我确实没有研究过。下面就是百度了一篇文章后简单回答这个问题。 参考:http://www.cnblogs.com/...

    Ryan-Miao
  • 小程序的登录与静默续期

    每一个有数据交互的小程序,都会涉及到登录、token 等问题,openid 又是什么呢?怎么使用静默续期,来提升用户体验呢?

    ITer.996
  • kafka broker 进入 conflicted ephemeral node 死循环

    转载请注明原创地址 http://www.cnblogs.com/dongxiao-yang/p/5621303.html

    sanmutongzi
  • 在Oracle中,如何定时清理INACTIVE状态的会话?

    今天小麦苗给大家分享的是在Oracle中,如何定时清理INACTIVE状态的会话?

    小麦苗DBA宝典
  • 【DB笔试面试702】在Oracle中,如何定时清理INACTIVE状态的会话?

    一般情况下,少量的INACTVIE会话对数据库并没有什么影响,但是,如果由于程序设计等某些原因导致数据库出现大量的会话长时间处于INACTIVE状态,那么将会导...

    小麦苗DBA宝典
  • MySQL · 最佳实践 · 如何索引JSON字段

    原文地址: http://mysql.taobao.org/monthly/2017/12/09/

    二狗不要跑

扫码关注云+社区

领取腾讯云代金券