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 相关文章推荐
PHP文件下载类
Dec 06 PHP
PHP 内存缓存加速功能memcached安装与用法
Sep 03 PHP
php将金额数字转化为中文大写
Jul 09 PHP
php采用session实现防止页面重复刷新
Dec 24 PHP
PHP实现基于文本的摩斯电码生成器
Jan 11 PHP
Ajax和PHP正则表达式验证表单及验证码
Sep 24 PHP
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
Feb 05 PHP
PHP排序算法之冒泡排序(Bubble Sort)实现方法详解
Apr 20 PHP
PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析
Apr 20 PHP
PHP实现微信申请退款功能
Oct 01 PHP
Laravel事件监听器用法实例分析
Mar 12 PHP
PHP利用递归函数实现无限级分类的方法
Mar 22 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验证码(支持中文)
2007/02/14 PHP
PHP中几种常见的超时处理全面总结
2012/09/11 PHP
百度站点地图(百度sitemap)生成方法分享
2014/01/09 PHP
thinkphp实现数组分页示例
2014/04/13 PHP
BOOM vs RR BO5 第二场 2.14
2021/03/10 DOTA
统一接口:为FireFox添加IE的方法和属性的js代码
2007/03/25 Javascript
JQuery AJAX提交中文乱码的解决方案
2010/07/02 Javascript
JS对外部文件的加载及对IFRMAME的加载的实现,当加载完成后,指定指向方法(方法回调)
2011/07/04 Javascript
JavaScript事件委托的技术原理探讨示例
2014/04/17 Javascript
jQuery入门介绍之基础知识
2015/01/13 Javascript
Bootstrap基本插件学习笔记之Popover提示框(19)
2016/12/08 Javascript
angularjs+bootstrap菜单的使用示例代码
2017/03/07 Javascript
Angular排序实例详解
2017/06/28 Javascript
JS和jQuery通过this获取html标签中的属性值(实例代码)
2017/09/11 jQuery
JavaScript实现表单注册、表单验证、运算符功能
2018/10/15 Javascript
js中的闭包实例展示
2018/11/01 Javascript
swiper.js插件实现pc端文本上下滑动功能示例
2018/12/03 Javascript
nodejs文件夹深层复制功能
2019/09/03 NodeJs
js 对象使用的小技巧实例分析
2019/11/08 Javascript
解决vux 中popup 组件Mask 遮罩在最上层的问题
2020/11/03 Javascript
合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
2009/04/09 Python
python 正则表达式 概述及常用字符
2009/05/04 Python
Python 元类使用说明
2009/12/18 Python
在python中的socket模块使用代理实例
2014/05/29 Python
Python加pyGame实现的简单拼图游戏实例
2015/05/15 Python
使用XML库的方式,实现RPC通信的方法(推荐)
2017/06/14 Python
pycharm debug功能实现跳到循环末尾的方法
2018/11/29 Python
python getopt模块使用实例解析
2019/12/18 Python
Python 实现使用空值进行赋值 None
2020/03/12 Python
Python PyQt5整理介绍
2020/04/01 Python
shell程序如何生命变量?shell变量是弱变量吗?
2014/11/10 面试题
人力资源管理毕业生自荐信
2013/11/21 职场文书
关爱留守儿童倡议书
2014/04/15 职场文书
大足石刻导游词
2015/02/02 职场文书
2016年班主任培训心得体会
2016/01/07 职场文书
Golang Elasticsearches 批量修改查询及发送MQ
2022/04/19 Golang