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 相关文章推荐
一个简单计数器的源代码
Oct 09 PHP
php学习 字符串课件
Jun 15 PHP
需要发散思维学习PHP
Jun 29 PHP
PHP开发中的错误收集,不定期更新。
Feb 03 PHP
php数据库配置文件一般做法分享
Jul 07 PHP
php获取ip的三个属性区别介绍(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
Sep 23 PHP
Thinkphp中volist标签mod控制一定记录的换行BUG解决方法
Nov 04 PHP
php判断类是否存在函数class_exists用法分析
Nov 14 PHP
PHP判断上传文件类型的解决办法
Oct 20 PHP
php实现头像上传预览功能
Apr 27 PHP
使用PHP json_decode可能遇到的坑与解决方法
Aug 03 PHP
PHP7 其他修改
Mar 09 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
美图秀秀web开放平台--PHP流式上传和表单上传示例分享
2014/06/22 PHP
php中字符串和正则表达式详解
2014/10/23 PHP
php判断文件上传类型及过滤不安全数据的方法
2014/12/17 PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
2016/07/20 PHP
制作特殊字的脚本
2006/06/26 Javascript
离开页面时检测表单元素是否被修改,提示保存的js代码
2010/08/25 Javascript
关于jQuery对象数据缓存Cache原理以及jQuery.data详解
2013/04/07 Javascript
JQuery弹出炫丽对话框的同时让背景变灰色
2014/05/22 Javascript
jQuery实现tag便签去重效果的方法
2015/01/20 Javascript
Js获取图片原始宽高的实现代码
2016/05/17 Javascript
第十篇BootStrap轮播插件使用详解
2016/06/21 Javascript
jQuery使用siblings获取某元素所有同辈(兄弟姐妹)元素用法示例
2017/01/30 Javascript
Node.JS使用Sequelize操作MySQL的示例代码
2017/10/09 Javascript
如何编写一个完整的Angular4 FormText 组件
2017/11/18 Javascript
Postman的下载及安装教程详解
2018/10/16 Javascript
vue两组件间值传递 $router.push实现方法
2019/05/15 Javascript
vue实现绑定事件的方法实例代码详解
2019/06/20 Javascript
浅谈vue限制文本框输入数字的正确姿势
2019/09/02 Javascript
浅谈Layui的eleTree树式选择器使用方法
2019/09/25 Javascript
基于vue实现图片验证码倒计时60s功能
2019/12/10 Javascript
原生JS实现天气预报
2020/06/16 Javascript
[14:57]DOTA2 HEROS教学视频教你分分钟做大人-幽鬼
2014/06/13 DOTA
从Python程序中访问Java类的简单示例
2015/04/20 Python
Python+django实现简单的文件上传
2016/08/17 Python
Tensorflow中使用tfrecord方式读取数据的方法
2018/06/19 Python
pandas值替换方法
2018/07/10 Python
让你的Python代码实现类型提示功能
2019/11/19 Python
django数据模型(Model)的字段类型解析
2019/12/25 Python
NumPy统计函数的实现方法
2020/01/21 Python
Python Selenium截图功能实现代码
2020/04/26 Python
安装Anaconda3及使用Jupyter的方法
2020/10/27 Python
英国大码女性时装零售商:Evans
2018/08/29 全球购物
高中军训感言600字
2014/03/11 职场文书
孝老爱亲事迹材料
2014/12/24 职场文书
志愿者事迹材料
2014/12/26 职场文书
MySQL数据库之内置函数和自定义函数 function
2022/06/16 MySQL