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 Token(令牌)设计
Mar 15 PHP
php str_pad 函数用法简介
Jul 11 PHP
php 一元分词算法
Nov 30 PHP
整理的9个实用的PHP库简介和下载
Nov 09 PHP
关于php连接mssql:pdo odbc sql server
Jul 20 PHP
PHP定时更新程序设计思路分享
Jun 10 PHP
PHP采用XML-RPC构造Web Service实例教程
Jul 16 PHP
PHP中使用array函数新建一个数组
Nov 19 PHP
PHP函数超时处理方法
Feb 14 PHP
PHP函数checkdnsrr用法详解(Windows平台用法)
Mar 21 PHP
PHP模板引擎Smarty自定义变量调解器用法
Apr 11 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
Apr 02 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
整理的一些实用WordPress后台MySQL操作命令
2013/01/07 PHP
PHP以指定字段为索引返回数据库所取的数据数组
2013/06/30 PHP
thinkphp区间查询、统计查询与SQL直接查询实例分析
2014/11/24 PHP
PHP实现在线阅读PDF文件的方法
2015/06/17 PHP
php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法【与函数nl2br功能相反】
2017/02/17 PHP
PHP删除字符串中非字母数字字符方法总结
2019/01/20 PHP
JavaScript 数组的 uniq 方法
2008/01/23 Javascript
减少访问DOM的次数提升javascript性能
2014/02/24 Javascript
一个简单的jQuery插件ajaxfileupload.js实现ajax上传文件例子
2014/06/26 Javascript
用javascript关闭本窗口技巧小结
2014/09/05 Javascript
jquery checkbox的相关操作总结
2016/10/17 Javascript
JavaScript实现图片无缝滚动效果
2017/07/07 Javascript
vue登录路由验证的实现
2017/12/13 Javascript
JS兼容所有浏览器的DOMContentLoaded事件
2018/01/12 Javascript
Angular封装搜索框组件操作示例
2019/04/25 Javascript
Javascript如何递归遍历本地文件夹
2020/08/06 Javascript
vue递归获取父元素的元素实例
2020/08/07 Javascript
Python fileinput模块使用介绍
2014/11/30 Python
python实现模拟按键,自动翻页看u17漫画
2015/03/17 Python
Python实现把数字转换成中文
2015/06/29 Python
python3实现ftp服务功能(服务端 For Linux)
2017/03/24 Python
Python装饰器(decorator)定义与用法详解
2018/02/09 Python
基于pandas数据样本行列选取的方法
2018/04/20 Python
Python使用scrapy爬取阳光热线问政平台过程解析
2019/08/14 Python
Python threading的使用方法解析
2019/08/28 Python
用sqlalchemy构建Django连接池的实例
2019/08/29 Python
Python中使用filter过滤列表的一个小技巧分享
2020/05/02 Python
pandas map(),apply(),applymap()区别解析
2021/02/24 Python
台湾前三大B2C购物网站:MOMO购物网
2017/04/27 全球购物
《猴子种果树》教学反思
2014/04/26 职场文书
市场营销工作计划书
2014/05/06 职场文书
十周年庆典策划方案
2014/06/03 职场文书
2014党的群众路线教育实践活动总结报告
2014/10/31 职场文书
2014年旅游局法制宣传日活动总结
2014/11/01 职场文书
修改MySQL的数据库引擎为INNODB的方法
2021/05/26 MySQL
Tensorflow与RNN、双向LSTM等的踩坑记录及解决
2021/05/31 Python