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)

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ionic3+

《跳一跳》小程序,python作弊ios版细节说明

功能不止作弊这么玩,其实很强大的,如常用于手机应用自动化测试,具体内容可以参考下文: 基于WebDriverAgent代理服务,实现iOS手机app自动化测试...

834
来自专栏小狼的世界

Mac下使用XLD转换无损音乐Ape

最近想要给音乐库增加一些音乐,下载了一些Ape格式的无损音乐,但是无法直接导入到iTunes中,必须经过其他工具转换成苹果的无损格式,XLD就是这样一款工具。X...

851
来自专栏hbbliyong

web程序打包详解

   重要更新:鉴于很多小伙伴们说看不到图,我这边换了几个浏览器看了下,都看得到的,估计是网速问题,请耐心等待,另外,为了更好的方便大家学习,特此提供源码以及一...

3987
来自专栏企鹅号快讯

使用技巧精讲

1、快速建立连接 单击顶部活动菜单栏上的“快速建立连接按钮”(Alt+Q),如图1 图1 单击按钮后,弹出图2所示的窗口 ? 图2 Protocol:默认SSH...

1905
来自专栏程序员的碎碎念

JavaScript实现登录注册验证

学习需要坚持,堕落了一星期,学也不是,玩也不对,今天终于跑到图书馆来学习。 言归正传,今天要做的就是登录注册页面的验证和与数据库连接的操作。这...

3004
来自专栏菩提树下的杨过

Silverlight自定义类库实现应用程序缓存

默认情况下,如果SL项目引用了一些其它程序集(即通俗意义上的dll文件),在编译打包时,这些dll会全部打包到一个xap文件里,随着引用的dll文件越来越多,x...

1919
来自专栏梦魇小栈

NPM 学习笔记整理

npm 之于 Node ,就像 pip 之于 Python , gem 之于 Ruby , composer 之于 PHP 。

340
来自专栏石奈子的Java之路

原 荐 Java9之Jshell入门

1845
来自专栏云计算教程系列

如何在CentOS 7上使用OpenLiteSpeed安装WordPress

WordPress是目前世界上最受欢迎的内容管理系统(CMS)。它允许您在数据库后端轻松设置博客和网站,使用PHP执行脚本和处理动态内容。WordPress有一...

812
来自专栏向治洪

解决Setting property 'source' to 'org.eclipse.jst.jee.server的问题

对于这个问题,我相信我的方法已经能帮90%的人解决了! 当你用Eclipse运行web项目的时候,你就会看到控制台出现: WARNING: [SetPrope...

1947

扫码关注云+社区