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 相关文章推荐
第二节--PHP5 的对象模型
Nov 16 PHP
php 分页类 扩展代码
Jun 11 PHP
Cakephp 执行主要流程
Mar 24 PHP
DW中链接mysql数据库时,建立字符集中文出现乱码的解决方法
Mar 27 PHP
PHP中ini_set和ini_get函数的用法小结
Feb 18 PHP
YII CLinkPager分页类扩展增加显示共多少页
Jan 29 PHP
深入理解PHP JSON数组与对象
Jul 19 PHP
PHP获取真实客户端的真实IP
Mar 07 PHP
[原创]php使用strpos判断字符串中数字类型子字符串出错的解决方法
Apr 01 PHP
PHP实现的登录页面信息提示功能示例
Jul 24 PHP
PHP Post获取不到非表单数据的问题解决办法
Feb 27 PHP
ThinkPHP5 的简单搭建和使用详解
Nov 15 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中常用的转义函数
2014/02/28 PHP
PHP实现多图上传和单图上传功能
2018/05/17 PHP
jQuery的实现原理的模拟代码 -3 事件处理
2010/08/03 Javascript
JavaScript中使用ActiveXObject操作本地文件夹的方法
2014/03/28 Javascript
JS对字符串编码的几种方式使用指南
2015/05/14 Javascript
jQuery实现在最后一个元素之前插入新元素的方法
2015/07/18 Javascript
基于javascript数组实现图片轮播
2016/05/02 Javascript
Nodejs进阶:基于express+multer的文件上传实例
2016/11/21 NodeJs
javascript简单进制转换实现方法
2016/11/24 Javascript
利用Node.js对文件进行重命名
2017/03/12 Javascript
利用ES6的Promise.all实现至少请求多长时间的实例
2017/08/28 Javascript
Layui给switch添加响应事件的例子
2019/09/03 Javascript
vue路由拦截器和请求拦截器知识点总结
2019/11/08 Javascript
node使用async_hooks模块进行请求追踪
2021/01/28 Javascript
[01:13:08]2018DOTA2亚洲邀请赛4.6 淘汰赛 mineski vs LGD 第二场
2018/04/10 DOTA
Python上传package到Pypi(代码简单)
2016/02/06 Python
python爬虫_自动获取seebug的poc实例
2017/08/05 Python
python实现数据写入excel表格
2018/03/25 Python
浅谈python中requests模块导入的问题
2018/05/18 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
2020/09/23 Python
万得城电器土耳其网站:欧洲第一大电子产品零售商
2016/10/07 全球购物
Bed Bath & Beyond加拿大官网:购买床上用品、浴巾、厨房电器等
2019/10/04 全球购物
现代绅士日常奢侈品:Todd Snyder
2019/12/13 全球购物
设计模式的基本要素是什么
2014/04/21 面试题
机电专业体育教师求职信
2013/09/21 职场文书
员工自我鉴定
2013/10/09 职场文书
财务主管自我鉴定
2014/01/17 职场文书
统计系教授推荐信
2014/02/28 职场文书
优秀研究生主要事迹
2014/06/03 职场文书
激励员工的口号
2014/06/16 职场文书
大学生第一学年自我鉴定
2014/09/12 职场文书
文体活动总结
2015/02/04 职场文书
2016应届毕业生就业指导课心得体会
2016/01/15 职场文书
用Python实现一个打字速度测试工具来测试你的手速
2021/05/28 Python
Python中使用ipython的详细教程
2021/06/22 Python
html中相对位置与绝对位置的具体使用
2022/05/15 HTML / CSS