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制作静态网站的模板框架(二)
Oct 09 PHP
php mssql 分页SQL语句优化 持续影响
Apr 26 PHP
PHP static局部静态变量和全局静态变量总结
Mar 02 PHP
PHP中实现Bloom Filter算法
Mar 30 PHP
PHP中trim()函数简单使用指南
Apr 16 PHP
PHP批量获取网页中所有固定种子链接的方法
Nov 18 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
Jul 19 PHP
php封装单文件上传到数据库(路径)
Oct 15 PHP
Yii2.0实现生成二维码功能实例
Oct 24 PHP
PHP中ltrim()函数的用法与实例讲解
Mar 28 PHP
浅析PHP7 的垃圾回收机制
Sep 06 PHP
PHP 99乘法表的几种实现代码
Oct 13 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递归函数返回值使用方法
2013/02/18 PHP
PHP5.3安装Zend Guard Loader图文教程
2014/09/29 PHP
php多次include后导致全局变量global失效的解决方法
2015/02/28 PHP
SESSION存放在数据库用法实例
2015/08/08 PHP
php验证码的制作思路和实现方法
2015/11/12 PHP
php简单生成一组与多组随机字符串的方法
2017/05/09 PHP
PHP如何使用cURL实现Get和Post请求
2020/07/11 PHP
JS 文件本身编码转换 图文教程
2009/10/12 Javascript
iframe 父窗口和子窗口相互的调用方法集锦
2010/12/15 Javascript
jsp js鼠标移动到指定区域显示选项卡离开时隐藏示例
2013/06/14 Javascript
JS 修改URL参数(实现代码)
2013/07/08 Javascript
JavaScript动态提示输入框输入字数的方法
2015/07/27 Javascript
input获取焦点时底部菜单被顶上来问题的解决办法
2017/01/24 Javascript
详解nodejs中exports和module.exports的区别
2017/02/17 NodeJs
Nodejs 获取时间加手机标识的32位标识实现代码
2017/03/07 NodeJs
nodejs制作爬虫实现批量下载图片
2017/05/19 NodeJs
javascript function(函数类型)使用与注意事项小结
2019/06/10 Javascript
Ajax获取node服务器数据的完整步骤
2020/09/20 Javascript
[06:24]DOTA2亚洲邀请赛小组赛第三日 TOP10精彩集锦
2015/02/01 DOTA
[31:55]完美世界DOTA2联赛循环赛 IO vs GXR BO2第一场 11.04
2020/11/05 DOTA
Python操作mongodb数据库进行模糊查询操作示例
2018/06/09 Python
10分钟教你用Python实现微信自动回复功能
2018/11/28 Python
解决Python3 被PHP程序调用执行返回乱码的问题
2019/02/16 Python
Python装饰器使用你可能不知道的几种姿势
2019/10/25 Python
tensorflow的计算图总结
2020/01/12 Python
python导入库的具体方法
2020/06/18 Python
CSS3字体效果的设置方法小结
2016/06/13 HTML / CSS
台湾深度自由行旅游平台:Tripbaa趣吧
2017/10/10 全球购物
Urban Outfitters德国官网:美国跨国生活方式零售公司
2018/05/21 全球购物
经典c++面试题五
2014/12/17 面试题
学生实习自我鉴定
2013/10/11 职场文书
模范家庭事迹材料
2014/02/10 职场文书
企业法人授权委托书
2014/04/03 职场文书
建筑工地宣传标语
2014/06/18 职场文书
2015年学校总务工作总结
2015/07/20 职场文书
php TP5框架生成二维码链接
2021/04/01 PHP