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完全过滤HTML,JS,CSS等标签
Jan 16 PHP
php win下Socket方式发邮件类
Aug 21 PHP
php面向对象全攻略 (九)访问类型
Sep 30 PHP
php标签云的实现代码
Oct 10 PHP
php二分查找二种实现示例
Mar 12 PHP
PHP调试的强悍利器之PHPDBG
Feb 22 PHP
php is_writable判断文件是否可写实例代码
Oct 13 PHP
PHP查询大量数据内存耗尽问题的解决方法
Oct 28 PHP
php实现页面纯静态的实例代码
Jun 21 PHP
php插件Xajax使用方法详解
Aug 31 PHP
Laravel 5.4.36中session没有保存成功问题的解决
Feb 19 PHP
Yii框架连表查询操作示例
Sep 06 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 5.4 你必须要知道的
2013/08/07 PHP
php生成二维码时出现中文乱码的解决方法
2014/12/18 PHP
php实现模拟post请求用法实例
2015/07/11 PHP
PHP实现基于mysqli的Model基类完整实例
2016/04/08 PHP
PHP实现对二维数组某个键排序的方法
2016/09/14 PHP
PHP和MYSQL实现分页导航思路详解
2017/04/11 PHP
使用jQuery简化Ajax开发 Ajax开发入门
2009/10/14 Javascript
js将iframe中控件的值传到主页面控件中的实现方法
2013/03/11 Javascript
jQuery UI 实现email输入提示实例
2013/08/15 Javascript
js动画效果制件让图片组成动画代码分享
2014/01/14 Javascript
jQuery源码分析之jQuery.fn.each与jQuery.each用法
2015/01/23 Javascript
jQuery实现仿QQ空间装扮预览图片的鼠标提示效果代码
2015/10/30 Javascript
Vue.js开发环境搭建
2016/11/10 Javascript
百度地图去掉marker覆盖物或者去掉maker的label文字方法
2018/01/26 Javascript
详解vue-router 命名路由和命名视图
2018/06/01 Javascript
详解Vue+axios+Node+express实现文件上传(用户头像上传)
2018/08/10 Javascript
vue和iview实现Scroll 数据无限滚动功能
2019/10/31 Javascript
详细探究Python中的字典容器
2015/04/14 Python
Python批量重命名同一文件夹下文件的方法
2015/05/25 Python
Python实现多线程抓取妹子图
2015/08/08 Python
和孩子一起学习python之变量命名规则
2018/05/27 Python
简单了解python单例模式的几种写法
2019/07/01 Python
python保留小数位的三种实现方法
2020/01/07 Python
Python导入模块包原理及相关注意事项
2020/03/25 Python
python json.dumps中文乱码问题解决
2020/04/01 Python
可视化pytorch 模型中不同BN层的running mean曲线实例
2020/06/24 Python
python math模块的基本使用教程
2021/01/16 Python
浅析几个CSS3常用功能的写法
2014/06/05 HTML / CSS
canvas实现飞机打怪兽射击小游戏的示例代码
2018/07/09 HTML / CSS
菲律宾酒店预订网站:Hotels.com菲律宾
2017/07/12 全球购物
英国IT硬件供应商,定制游戏PC:Mesh Computers
2019/03/28 全球购物
意大利奢侈品零售商:ilDuomo Novara
2019/09/11 全球购物
2014学雷锋活动心得体会
2014/03/10 职场文书
私人贷款担保书该怎么写呢?
2019/07/02 职场文书
为什么mysql字段要使用NOT NULL
2021/05/13 MySQL
springboot 多数据源配置不生效遇到的坑及解决
2021/11/17 Java/Android