PHP实现会员账号单唯一登录的方法分析

这篇文章主要介绍了PHP实现会员账号单唯一登录的方法,结合实例形式分析了php基于session与文件读写的单一用户登陆限制实现技巧,需要的朋友可以参考下。

本文实例讲述了PHP实现会员账号单唯一登录的方法,分享给大家供大家参考,具体如下:

情景再现

同一会员账号限制在同一台设备(电脑、手机、Ipad等)上单点登录,重复登录后,原登录访问页面时则直接跳转到登录页面且需要重新登录才能正常访问。

原理分析

A账号在A电脑上登录后,A账号此时又用B电脑再次登录,则A电脑请求页面时,提示“重新登录”的信息,并跳转到登录页面

思路解析:

A账号在A电脑上登录后,把SESSION ID写入TXT文件,每次访问页面时,都做一次校验(比较txt文件的值是否和当前登录的session_id的值相同)

实例

1、入口与校验(index.php)

  1. <?php
  2. session_start();
  3. $uid = 10;
  4. if(is_login($uid)){
  5. header('location:loginSuccess.php');
  6. }else{
  7. $getLogSessionId = file_get_contents('session_log/'.$uid.'.txt');
  8. if($getLogSessionId){
  9. echo "已在其他地方登录,请重新登录";
  10. echo "<br>";
  11. echo "5秒后跳转到登录页面!";
  12. header("refresh:5;url=login.php");
  13. }else{
  14. echo '第一次登录...';
  15. echo "<br>";
  16. echo "3秒钟后跳转到登录页面!";
  17. header("refresh:3;url=login.php");
  18. }
  19. }
  20. /**
  21. * 通过登录时写入文件session_id和当前登录设备后生成的session_id进行比较,相同则是同一台设备登录,不同则在别的地方登录
  22. */
  23. function is_login($uid){
  24. $getLogSessionId = file_get_contents('session_log/'.$uid.'.txt');
  25. if($getLogSessionId == session_id()){
  26. return true;
  27. }else{
  28. return false;
  29. }
  30. }

2、登录(login.php)

  1. <?php
  2. session_start();
  3. echo "登录中....";
  4. echo '<br>';
  5. $uid = 10;
  6. file_put_contents('session_log/'.$uid.'.txt',session_id());
  7. echo "登录完成";

3、登录成功(loginSuccess.php)

<?php

echo "我登录成功了!";

4、保存sessionId文件夹(session_log),测试代码,需要手动建一个或者赋予自动生成文件的权限