php判断当前用户已在别处登录的方法


Posted in PHP onJanuary 06, 2015

本文实例讲述了php判断当前用户已在别处登录的方法。分享给大家供大家参考。具体分析如下:

主要思路如下:
1.登录时,将用户的SessionID记录下来
2.验证登录时,将记录的该用户SessionID与当前SessionID匹配
3.如果不相同,说明在别处登录

完整实例代码点击此处本站下载。

首先,进入http://localhost/login_single/index.php可查看登录状态。
index.php页面代码如下:

<?php

//开启Session

session_start();
header("Content-type: text/html; charset=utf-8");
//取Session中的用户信息

$username=$_SESSION['username'];
//判断是否有效

if(!isset($username)){

 echo "您未登录!<a href='login.html'>登录</a>";

 exit();

}
//登录时保存的该用户SessionID

$sessin_id=file_get_contents('session_id/'.$username);
//如果当前的SessionID与之前记录的SessionID不匹配

//说明已在别处登录

if(session_id() != $sessin_id){

 //注销当前用户

 unset($_SESSION['username']);

 echo "您已在别处登录!<a href='login.html'>从新登录</a>";

 exit();

}else{

 echo "欢迎您:".$username;

 echo " <a href='logout.php'>注销</a>";

}
echo "<p>--这是登录之后才能看到的内容--</p>";

对于未登录的用户则提示跳转到 http://localhost/login_single/login.html登录页面,login.html页面代码如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">

 <title>登录</title>

</head>

<body>

 <form method="post" action="login.php">

  用户名:<input name="username"><br>

  密 码:<input name="password" type="password"><br>

  <input type="submit" value="登录">

 </form>

 <div>

  提示:测试用户名:admin  密码:123

 </div>

</body>

</html>

登录成功后由login.php页面进行相应的session判断。

login.php页面代码如下:

<?php

//开启Session

session_start();
//设置编码

header("Content-type: text/html; charset=utf-8");
//接收表单提交的内容

$username=$_POST['username'];

$password=$_POST['password'];
//模拟验证用户登录

if($username=="admin" && $password=="123"){

 

 //登录成功,将用户名保存到Session中

 $_SESSION['username']=$username;

   

 //创建目录

 if(!file_exists('session_id')){

  mkdir('session_id');

 }

 

 //保存的文件名

 $filename='session_id/'.$username;

 

 //当前登录用户的SessionId

 $session_id=session_id();

 

 //当SessionID保存到对应的文件中

 //实际应用,可以保存到数据库、memcache等

 file_put_contents($filename,$session_id);

 

 //跳到主页

 header ('Location: index.php');

 

}else{

 echo ('<script>alert("登录失败");window.location="login.html"</script>');

 exit();

}

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

PHP 相关文章推荐
PHPnow安装服务[apache_pn]失败的问题的解决方法
Sep 10 PHP
PHP url 加密解密函数代码
Aug 26 PHP
如何在smarty中增加类似foreach的功能自动加载数据
Jun 26 PHP
php实现下载限制速度示例分享
Feb 13 PHP
PHP和Mysql中转UTF8编码问题汇总
Oct 10 PHP
php页面跳转session cookie丢失导致不能登录等问题的解决方法
Dec 12 PHP
PHP检测接口Traversable用法详解
Dec 29 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
Feb 19 PHP
Laravel框架实现的使用smtp发送邮件功能示例
Mar 12 PHP
PHP中将一个字符串部分字符用星号*替代隐藏的实现代码
Sep 08 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
Sep 30 PHP
PHP语言对接抖音快手小红书视频/图片去水印API接口源码
Aug 11 PHP
php实现utf-8转unicode函数分享
Jan 06 #PHP
windows中为php安装mongodb与memcache
Jan 06 #PHP
phpQuery让php处理html代码像jQuery一样方便
Jan 06 #PHP
php基于表单密码验证与HTTP验证用法实例
Jan 06 #PHP
php使用fputcsv()函数csv文件读写数据的方法
Jan 06 #PHP
phplot生成图片类用法详解
Jan 06 #PHP
写一段简单的PHP建立文件夹代码
Jan 06 #PHP
You might like
PHP中的日期及时间
2006/11/23 PHP
PHP 程序员也要学会使用“异常”
2009/06/16 PHP
php中json_decode()和json_encode()的使用方法
2012/06/04 PHP
基于php和mysql的简单的dao类实现crud操作功能
2014/01/27 PHP
PHP图片处理之图片旋转和图片翻转实例
2014/11/19 PHP
php操纵mysqli数据库的实现方法
2016/09/18 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
让getElementsByName适应IE和firefox的方法
2007/09/24 Javascript
Javascript的getYear、getFullYear、getUTCFullYear异同分享
2011/11/30 Javascript
js实现单一html页面两套css切换代码
2013/04/11 Javascript
javascript window.open打开新窗口后无法再次打开该窗口问题的解决方法
2014/04/12 Javascript
浅谈javascript的调试
2015/01/28 Javascript
javascript日期操作详解(脚本之家整理)
2015/09/05 Javascript
详解jQuery UI库中文本输入自动补全功能的用法
2016/04/23 Javascript
js中Number数字数值运算后值不对的解决方法
2017/02/28 Javascript
JS实现百度搜索接口及链接功能实例代码
2018/02/02 Javascript
vue-cli 打包后提交到线上出现 &quot;Uncaught SyntaxError:Unexpected token&quot; 报错
2018/11/06 Javascript
vue router导航守卫(router.beforeEach())的使用详解
2019/04/19 Javascript
React 父子组件通信的实现方法
2019/12/05 Javascript
[01:38]女王驾到——至宝魔廷新尊技能&特效展示
2020/06/16 DOTA
Python yield 使用浅析
2015/05/28 Python
Python 搭建Web站点之Web服务器网关接口
2016/11/06 Python
python 列表输出重复值以及对应的角标方法
2019/06/11 Python
Python socket 套接字实现通信详解
2019/08/27 Python
pytorch 归一化与反归一化实例
2019/12/31 Python
python函数定义和调用过程详解
2020/02/09 Python
conda安装tensorflow和conda常用命令小结
2021/02/20 Python
css3实现圆锥渐变conic-gradient效果
2020/02/12 HTML / CSS
HTML5 drag和drop具体使用详解
2021/01/18 HTML / CSS
德国的大型美妆个护电商:Flaconi
2020/06/26 全球购物
Unix如何在一行中运行多个命令
2015/05/29 面试题
办公室副主任岗位职责
2013/11/25 职场文书
质监局领导班子对照检查材料思想汇报
2014/09/27 职场文书
医生个人自我剖析材料
2014/10/08 职场文书
Nginx+Tomcat负载均衡多实例详解
2022/04/11 Servers
人物搭配车车超萌联名预备中 【咒术迴战】 ⨯ 【天竺鼠车车】 展开合作
2022/04/11 日漫