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字符转义相关函数小结(php下的转义字符串)
Apr 12 PHP
解析web文件操作常见安全漏洞(目录、文件名检测漏洞)
Jun 29 PHP
thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法
Oct 30 PHP
正确的PHP匹配UTF-8中文的正则表达式
May 13 PHP
PHP基于单例模式编写PDO类的方法
Sep 13 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
Mar 15 PHP
PHP 使用二进制保存用户状态的实例
Jan 29 PHP
PHP手机短信验证码实现流程详解
May 17 PHP
php使用array_chunk函数将一个数组分割成多个数组
Dec 05 PHP
docker-compose部署php项目实例详解
Jul 30 PHP
PHP生成随机字符串实例代码(字母+数字)
Sep 11 PHP
关于laravel5.5的定时任务详解(demo)
Oct 23 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调用Webservice思路及源码分享
2014/06/04 PHP
php+mysqli数据库连接的两种方式
2015/01/28 PHP
php实现将上传word文件转为html的方法
2015/06/03 PHP
PHP函数nl2br()与自定义函数nl2p()换行用法分析
2016/04/02 PHP
Javascript实例教程(19) 使用HoTMetal(5)
2006/12/23 Javascript
Jquery 插件开发笔记整理
2011/01/17 Javascript
JQuery+JS实现仿百度搜索结果中关键字变色效果
2011/08/02 Javascript
jquery重新播放css动画所遇问题解决
2013/08/21 Javascript
JQuery插件fancybox无法在弹出层使用左右键的解决办法
2013/12/25 Javascript
禁止iframe页面的所有js脚本如alert及弹出窗口等
2014/09/03 Javascript
微信小程序  生命周期详解
2016/10/27 Javascript
JS实现的几个常用算法
2016/11/12 Javascript
Vue键盘事件用法总结
2017/04/18 Javascript
纯原生js实现贪吃蛇游戏
2020/04/16 Javascript
vue通信方式EventBus的实现代码详解
2019/06/10 Javascript
微信小程序 下拉刷新及上拉加载原理解析
2019/11/06 Javascript
JS document内容及样式操作完整示例
2020/01/14 Javascript
vue-cli点击实现全屏功能
2020/03/07 Javascript
vue-cli设置publicPath小记
2020/04/14 Javascript
深入理解Django的中间件middleware
2018/03/14 Python
Form表单及django的form表单的补充
2019/07/25 Python
python模块和包的应用BASE_PATH使用解析
2019/12/14 Python
Scrapy框架实现的登录网站操作示例
2020/02/06 Python
使用ITK-SNAP进行抠图操作并保存mask的实例
2020/07/01 Python
Python 如何查找特定类型文件
2020/08/17 Python
HTML5、Select下拉框右边加图标的实现代码(增进用户体验)
2017/10/16 HTML / CSS
2019史上最全Database工程师题库
2015/12/06 面试题
介绍一下linux的文件系统
2015/10/06 面试题
工程管理英文求职信
2014/03/18 职场文书
疾病捐款倡议书
2014/05/13 职场文书
2015年财务试用期工作总结
2014/12/24 职场文书
大学生国家助学金感谢信
2015/01/23 职场文书
2015应届毕业生求职信范文
2015/03/20 职场文书
我的法兰西岁月观后感
2015/06/09 职场文书
Python还能这么玩之用Python做个小游戏的外挂
2021/06/04 Python
java泛型通配符详解
2021/07/25 Java/Android