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 相关文章推荐
漂亮但不安全的CTB
Oct 09 PHP
PHP开发中常用的8个小技巧
Aug 27 PHP
php mssql 时间格式问题
Jan 13 PHP
PHP 远程关机实现代码
Nov 10 PHP
PHP函数in_array()使用详解
Aug 20 PHP
thinkphp中memcache的用法实例
Nov 29 PHP
php中实现xml与mysql数据相互转换的方法
Dec 25 PHP
PHP对文件夹递归执行chmod命令的方法
Jun 19 PHP
PHP利用APC模块实现大文件上传进度条的方法
Oct 29 PHP
PHP通过反射动态加载第三方类和获得类源码的实例
Nov 27 PHP
PHP给文字内容中的关键字进行套红处理
Apr 12 PHP
PHP自定义函数格式化json数据示例
Sep 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
php5.3 goto函数介绍和示例
2014/03/21 PHP
使用配置类定义Codeigniter全局变量
2014/06/12 PHP
PHP面向对象程序设计之接口的继承定义与用法详解
2018/12/20 PHP
jQuery 常见操作实现方式和常用函数方法总结
2011/05/06 Javascript
jQuery中delegate和on的用法与区别详细解析
2014/01/26 Javascript
nodejs分页类代码分享
2014/06/17 NodeJs
jquery获取img的src值的简单实例
2016/05/17 Javascript
jQuery日期范围选择器附源码下载
2017/05/23 jQuery
node.js操作MongoDB的实例详解
2017/10/11 Javascript
详解刷新页面vuex数据不消失和不跳转页面的解决
2018/01/30 Javascript
详解VueJs中的V-bind指令
2018/05/03 Javascript
vue生命周期实例小结
2018/08/15 Javascript
Layer组件多个iframe弹出层打开与关闭及参数传递的方法
2019/09/25 Javascript
[38:27]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第二场 11.26
2020/11/30 DOTA
python3编码问题汇总
2016/09/06 Python
Python tkinter事件高级用法实例
2018/01/31 Python
python使用wxpy轻松实现微信防撤回的方法
2019/02/21 Python
django中ORM模型常用的字段的使用方法
2019/03/05 Python
python实现随机漫步方法和原理
2019/06/10 Python
python 实现矩阵填充0的例子
2019/11/29 Python
JupyterNotebook设置Python环境的方法步骤
2019/12/03 Python
python with (as)语句实例详解
2020/02/04 Python
PyCharm取消波浪线、下划线和中划线的实现
2020/03/03 Python
通过Python扫描代码关键字并进行预警的实现方法
2020/05/24 Python
python zip()函数的使用示例
2020/09/23 Python
Python安装并操作redis实现流程详解
2020/10/13 Python
利用python 下载bilibili视频
2020/11/13 Python
HTML5实践-图片设置成灰度图
2012/11/12 HTML / CSS
SHEIN香港:价格实惠的女性时尚服装
2018/08/14 全球购物
正宗的澳大利亚Ugg靴子零售商:UGG Express
2020/04/19 全球购物
六一节目主持词
2014/04/01 职场文书
公司爱心捐款倡议书
2014/05/14 职场文书
司机个人年终总结
2015/03/03 职场文书
2015年妇联工作总结范文
2015/04/22 职场文书
python 自动化偷懒的四个实用操作
2021/04/11 Python
springboot+WebMagic+MyBatis爬虫框架的使用
2021/08/07 Java/Android