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

本文实例讲述了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数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP错误与异常处理方法总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

(0)

相关推荐

  • PHP中如何使用session实现保存用户登录信息

    session在php中是一个非常重要的东西,像我们用户登录一般都使用到session这个东西,相对于cookie来说session 要安全很多,同时我们购物车经常使用session来做临时的记录保存哦. 使用session保存页面登录信息 1.数据库连接配置页面:connectvars.php <?php //数据库的位置 define('DB_HOST', 'localhost'); //用户名 define('DB_USER', 'root'); //口令 define('DB_PASSW

  • php中使用session防止用户非法登录后台的方法

    本文实例讲述了php中使用session防止用户非法登录后台的方法.分享给大家供大家参考.具体如下: 一般来说,我们登录网站后台时,服务器会把登录信息保存到session文件里,并通过读取session文件来判断是否可以进行后台操作. 以下面为例,假如admin.php是我们的后台操作页面,如果没有启用 session,那么,即便是没有登录,用户照样能访问到该页面,这时候,就需要用到 session 来防止用户非法登录到这个页面了.下面是三个文件的代码 登录页面:login.php 复制代码 代

  • PHP通过session id 实现session共享和登录验证的代码

    先说说,这个机制的用途吧,到现在为止战地知道这个机制有两个方面的用途: 首先,多服务器共享session问题,这个大家应该都能够理解的,当一个网站的用户量过大,就会使用服务器集群,例如专门有一个登录用的服务器.用户通过登录服务器登录之后,登录服务器保存了用户的登录信息session,而其他受访问的服务器,例如电影服务器没有这个session,那么我们就要通过一个session的唯一标识来共享这个session了--具体session的共享超出了本文的范围,请自行查阅资料. 第二个用途就是,验证同

  • php $_SESSION会员登录实例分享

    php会员登录模块是网站开发中很简单的一个模块,本实例主要给php初学者一个简单的参考,其中的逻辑还是要读者自己领会,多编多思考. login.php文件 <?php ob_start(); session_start(); ?> <? // error_reporting(E_ALL); // ini_set("display_errors", 1); ?> <html lang="en"> <head> <t

  • php session应用实例 登录验证

    复制代码 代码如下: <html> <head> <title>Login</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body> <form name="form1" method="post" action=

  • PHP根据session与cookie用户登录状态操作类的代码

     1.用户登录状态操作类UserLogin <?php final class UserLogin { public function __construct() { } public static function getUserInfo() { if (isset($_COOKIE["user_id"])&&$_COOKIE["user_id"]&&(trim($_COOKIE["user_id"])!=

  • PHP判断用户是否已经登录(跳转到不同页面或者执行不同动作)

    1. 2. <if condition="$GLOBALS['userinfo']['user_id'] gt 0"> <span class="help_wz"><a href="{$Think.config.VIP_URL}/Member/user_pwd/" style="color:#404958;">找回登录密码</a></span> <else/&g

  • 简单的方法让你的后台登录更加安全(php中加session验证)

    本文将以Joomla!后台链接为例,讲解如何"修改"我们的后台链接,使其更加安全. 原理:通过特定文件为后台入口注册session,否则失败退出.即直接使用原后台地址将无法登录后台.这样一来,入口文件名的多样性.可变更性将为你的后台登录提供更加安全的环境. 一.入口文件:myadmin.php(文件名可随时更改) 作用:注册session.源码如下: 复制代码 代码如下: <?php session_name( "Zjmainstay" ); //sessio

  • 利用php实现一周之内自动登录存储机制(cookie、session、localStorage)

    cookie.session.localStorage这三个应该是最让程序员头疼的了,我利用简单的登录界面的username和password来说明一下吧. 1.cookie用来存储用户相关数据,存储的位置在用户本地: 首先是登录界面定义: <form action="server.php" method="post"> <input type="text" name="username" class=&qu

  • php中如何同时使用session和cookie来保存用户登录信息

    同时使用session和cookie来保存用户登录信息1.数据库连接配置页面:connectvars.php 复制代码 代码如下: <?php//数据库的位置define('DB_HOST', '127.0.0.1');//用户名define('DB_USER', 'root');//口令define('DB_PASSWORD', '19900101');//数据库名define('DB_NAME','test') ;?> 2.登录页面:logIn.php 复制代码 代码如下: <?ph

  • php有效防止同一用户多次登录

    [问题描述]:同一用户在同一时间多次登录如果不能检测出来,是危险的.因为,你无法知道是否有其他用户在登录你的账户.如何禁止同一用户多次登录呢? [解决方案] (1) 每次登录,身份认证成功后,重新产生一个session_id. session_regenerate_id(); session_register ("username") ; (2) 在用户数据库中开一个sessionid字段,重新产生session_id后,都更新该字段. $sessionid = session_id(

随机推荐