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+DBM的同学录程序(1)
Oct 09 PHP
php cout&amp;lt;&amp;lt;的一点看法
Jan 24 PHP
PHP开发中的错误收集,不定期更新。
Feb 03 PHP
深入php数据采集的详解
Jun 02 PHP
PHP JS Ip地址及域名格式检测代码
Sep 27 PHP
PHP读取大文件的类SplFileObject使用介绍
Apr 09 PHP
PHP实现获取文件后缀名的几种常用方法
Aug 08 PHP
PHP快速推送微信模板消息
Apr 14 PHP
php curl上传、下载、https登陆实现代码
Jul 23 PHP
PHP实现的一致性Hash算法详解【分布式算法】
Mar 31 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
Feb 15 PHP
PHP+MySql实现一个简单的留言板
Jul 19 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
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
2015/02/12 PHP
php基于openssl的rsa加密解密示例
2016/07/11 PHP
Linux下快速搭建php开发环境
2017/03/13 PHP
PHP自动识别当前使用移动终端
2018/05/21 PHP
PHP发送邮件确认验证注册功能示例【修改别人邮件类】
2019/11/09 PHP
extjs 学习笔记(三) 最基本的grid
2009/10/15 Javascript
浅谈jQuery中 wrap() wrapAll() 与 wrapInner()的差异
2014/11/12 Javascript
深入浅出分析javaScript中this用法
2015/05/09 Javascript
Bootstrap每天必学之按钮
2015/11/26 Javascript
基于Bootstrap实现的下拉菜单手机端不能选择菜单项的原因附解决办法
2016/07/22 Javascript
Bootstrap的class样式小结
2016/12/01 Javascript
Bootstrap页面缩小变形的快速解决办法
2017/02/03 Javascript
ES6新特性之Object的变化分析
2017/03/31 Javascript
深入理解 JavaScript 中的 JSON
2017/04/06 Javascript
react 应用多入口配置及实践总结
2018/10/17 Javascript
基于原生JS封装的Modal对话框插件的示例代码
2020/09/09 Javascript
React实现todolist功能
2020/12/28 Javascript
vue中axios封装使用的完整教程
2021/03/03 Vue.js
Python3中条件控制、循环与函数的简易教程
2017/11/21 Python
python利用OpenCV2实现人脸检测
2020/04/16 Python
python opencv旋转图像(保持图像不被裁减)
2018/07/26 Python
浅谈Python爬虫基本套路
2019/03/25 Python
Python如何实现转换URL详解
2019/07/02 Python
Django CBV类的用法详解
2019/07/26 Python
Python3.7黑帽编程之病毒篇(基础篇)
2020/02/04 Python
python 基于selectors库实现文件上传与下载
2020/12/31 Python
selenium携带cookies模拟登陆CSDN的实现
2021/01/19 Python
Skyscanner波兰:廉价航班
2017/11/07 全球购物
日本乐天官方海外转运服务:Rakuten Global Express
2018/11/30 全球购物
如何提高MySql的安全性
2014/06/19 面试题
社会实践自我鉴定
2013/11/07 职场文书
关于礼仪的演讲稿
2014/01/04 职场文书
《我为你骄傲》教学反思
2014/02/20 职场文书
中秋节慰问信
2015/02/15 职场文书
css3实现背景图片半透明内容不透明的方法示例
2021/04/13 HTML / CSS
游戏开发中如何使用CocosCreator进行音效处理
2021/04/14 Javascript