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 相关文章推荐
简单实现限定phpmyadmin访问ip的方法
Mar 05 PHP
LotusPhp笔记之:Cookie组件的使用详解
May 06 PHP
基于PHP对XML的操作详解
Jun 07 PHP
php通过隐藏表单控件获取到前两个页面的url
Sep 09 PHP
PHP数组与对象之间使用递归实现转换的方法
Jun 24 PHP
weiphp微信公众平台授权设置
Jan 04 PHP
PHP安装GeoIP扩展根据IP获取地理位置及计算距离的方法
Jul 01 PHP
php网页版聊天软件实现代码
Aug 12 PHP
详解Yii2 rules 的验证规则
Dec 02 PHP
php利用imagemagick实现复古老照片效果实例
Feb 16 PHP
PHP开发中解决并发问题的几种实现方法分析
Nov 13 PHP
Referer原理与图片防盗链实现方法详解
Jul 03 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实现文件下载(支持中文文名)
2013/12/04 PHP
PHP表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号
2015/09/30 PHP
PHP培训要多少钱
2017/06/06 PHP
PHP获取数据库表中的数据插入新的表再原删除数据方法
2018/10/12 PHP
html读出文本文件内容
2007/01/22 Javascript
JS 自动安装exe程序
2008/11/30 Javascript
6个DIV 135或246间隔一秒轮番显示效果
2010/07/24 Javascript
javascript学习笔记(五) Array 数组类型介绍
2012/06/19 Javascript
Javascript 多浏览器兼容总结(实战经验)
2013/10/30 Javascript
JS设置获取cookies的方法
2014/01/26 Javascript
node.js中的fs.closeSync方法使用说明
2014/12/17 Javascript
JavaScript弹出新窗口后向父窗口输出内容的方法
2015/04/06 Javascript
jquery事件的ready()方法使用详解
2015/11/11 Javascript
理解js对象继承的N种模式
2016/01/25 Javascript
Node.js重新刷新session过期时间的方法
2016/02/04 Javascript
React Router基础使用
2017/01/17 Javascript
Three.js获取鼠标点击的三维坐标示例代码
2017/03/24 Javascript
利用node.js实现自动生成前端项目组件的方法详解
2017/07/12 Javascript
用最少的JS代码写出贪吃蛇游戏
2018/01/12 Javascript
微信小程序实现预览图片功能
2020/10/22 Javascript
浅谈layui框架自带分页和表格重载的接口解析问题
2019/09/11 Javascript
JS实现联想、自动补齐国家或地区名称的功能
2020/07/07 Javascript
[02:14]完美“圣”典2016风云人物:xiao8专访
2016/12/01 DOTA
基于ID3决策树算法的实现(Python版)
2017/05/31 Python
python flask实现分页效果
2017/06/27 Python
Python笔记之facade模式
2019/11/20 Python
python Socket网络编程实现C/S模式和P2P
2020/06/22 Python
python 实现音频叠加的示例
2020/10/29 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
2020/12/07 Python
网络安全方面的面试题
2016/01/07 面试题
护理专业个人求职简历的自我评价
2013/10/13 职场文书
室内设计专业学生的自我评价分享
2013/11/27 职场文书
闭幕式主持词
2014/04/02 职场文书
独生子女证明范本
2015/06/19 职场文书
二婚主持词
2015/06/30 职场文书
创业者如何撰写出一份打动投资人的商业计划书?
2019/07/02 职场文书