PHP实现会员账号单唯一登录的方法分析


Posted in PHP onMarch 07, 2019

本文实例讲述了PHP实现会员账号单唯一登录的方法。分享给大家供大家参考,具体如下:

情景再现

同一会员账号限制在同一台设备(电脑、手机、Ipad等)上单点登录,重复登录后,原登录访问页面时则直接跳转到登录页面且需要重新登录才能正常访问。

原理分析

A账号在A电脑上登录后,A账号此时又用B电脑再次登录,则A电脑请求页面时,提示“重新登录”的信息,并跳转到登录页面

思路解析:

A账号在A电脑上登录后,把SESSION ID写入TXT文件,每次访问页面时,都做一次校验(比较txt文件的值是否和当前登录的session_id的值相同)

实例

1、入口与校验(index.php)

<?php
session_start();
$uid = 10;
if(is_login($uid)){
 header('location:loginSuccess.php');
}else{
 $getLogSessionId = file_get_contents('session_log/'.$uid.'.txt');
 if($getLogSessionId){
  echo "已在其他地方登录,请重新登录";
  echo "<br>";
  echo "5秒后跳转到登录页面!";
  header("refresh:5;url=login.php");
 }else{
  echo '第一次登录...';
  echo "<br>";
  echo "3秒钟后跳转到登录页面!";
  header("refresh:3;url=login.php");
 }
}
/**
* 通过登录时写入文件session_id和当前登录设备后生成的session_id进行比较,相同则是同一台设备登录,不同则在别的地方登录
*/
function is_login($uid){
 $getLogSessionId = file_get_contents('session_log/'.$uid.'.txt');
 if($getLogSessionId == session_id()){
  return true;
 }else{
  return false;
 }
}

2、登录(login.php)

<?php
session_start();
echo "登录中....";
echo '<br>';
$uid = 10;
file_put_contents('session_log/'.$uid.'.txt',session_id());
echo "登录完成";

3、登录成功(loginSuccess.php)

<?php
echo "我登录成功了!";

4、保存sessionId文件夹(session_log),测试代码,需要手动建一个或者赋予自动生成文件的权限

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
一个odbc连mssql分页的类
Oct 09 PHP
人大复印资料处理程序_查询篇
Oct 09 PHP
抓取YAHOO股票报价的类
May 15 PHP
php读取html并截取字符串的简单代码
Nov 30 PHP
基于python发送邮件的乱码问题的解决办法
Apr 25 PHP
destoon常用的安全设置概述
Jun 21 PHP
php中出现空白页的原因及解决方法汇总
Jul 08 PHP
微信公众平台开发关注及取消关注事件的方法
Dec 23 PHP
搭建Vim为自定义的PHP开发工具的一些技巧
Dec 11 PHP
PHP数组式访问接口ArrayAccess用法分析
Dec 28 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
Sep 07 PHP
Laravel实现ApiToken认证请求
Oct 14 PHP
PHP模糊查询技术实例分析【附源码下载】
Mar 07 #PHP
原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】
Mar 07 #PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
Mar 07 #PHP
PHP使用PDO操作sqlite数据库应用案例
Mar 07 #PHP
php使用fullcalendar日历插件详解
Mar 06 #PHP
PHP封装XML和JSON格式数据接口操作示例
Mar 06 #PHP
浅谈PHP封装CURL
Mar 06 #PHP
You might like
php_xmlhttp 乱码问题解决方法
2009/08/07 PHP
php截取后台登陆密码的代码
2012/05/05 PHP
PHP文件大小格式化函数合集
2014/03/10 PHP
PHP上传图片时判断上传文件是否为可用图片的方法
2016/10/20 PHP
thinkPHP分页功能实例详解
2017/05/05 PHP
ExtJS 入门
2010/10/29 Javascript
js去字符串前后空格5种实现方法及比较
2013/04/03 Javascript
jquery插件validate验证的小例子
2013/05/08 Javascript
Jquery同辈元素选中/未选中效果的实例代码
2013/08/01 Javascript
JS实现简单的顶部定时关闭层效果
2014/06/15 Javascript
js制作简易年历完整实例
2015/01/28 Javascript
浅谈JavaScript中的字符编码转换问题
2015/07/07 Javascript
JQuery入门基础小实例(1)
2015/09/17 Javascript
JS实现中国公民身份证号码有效性验证
2017/02/20 Javascript
pm2 部署 node的三种方法示例
2017/10/20 Javascript
vue中简单弹框dialog的实现方法
2018/02/26 Javascript
layui中的switch开关实现方法
2019/09/03 Javascript
原生js实现二级联动菜单
2019/11/27 Javascript
[03:56]DOTA2完美大师赛趣味视频之小鸽子和Mineski打台球
2017/11/24 DOTA
python修改操作系统时间的方法
2015/05/18 Python
python 内置模块详解
2019/01/01 Python
python频繁写入文件时提速的方法
2019/06/26 Python
Python实现的对一个数进行因式分解操作示例
2019/06/27 Python
python 随机森林算法及其优化详解
2019/07/11 Python
Python 实现输入任意多个数,并计算其平均值的例子
2019/07/16 Python
django将网络中的图片,保存成model中的ImageField的实例
2019/08/07 Python
python3+opencv生成不规则黑白mask实例
2020/02/19 Python
18-35岁旅游团的全球领导者:Contiki
2017/02/08 全球购物
理肤泉美国官网:La Roche-Posay
2018/01/17 全球购物
写出二分查找算法的两种实现
2013/05/13 面试题
解决方案设计综合面试题
2015/08/31 面试题
《开国大典》教学反思
2014/04/19 职场文书
商品陈列协议书
2014/09/29 职场文书
2014年路政工作总结
2014/12/10 职场文书
解析Java中的static关键字
2021/06/14 Java/Android
python模块与C和C++动态库相互调用实现过程示例
2021/11/02 Python