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


Posted in PHP onNovember 19, 2015

【问题描述】:同一用户在同一时间多次登录如果不能检测出来,是危险的。因为,你无法知道是否有其他用户在登录你的账户。如何禁止同一用户多次登录呢?
【解决方案】
(1) 每次登录,身份认证成功后,重新产生一个session_id。

session_regenerate_id(); 
session_register ("username") ;

(2) 在用户数据库中开一个sessionid字段,重新产生session_id后,都更新该字段。

$sessionid = session_id(); 
$db = new PDO('sqlite:softToken.db'); 
$sql = "update userinfo set sessionid ='$sessionid' where username='$username' and passwd='$passwd';"; 
$query = $db->prepare($sql); 
$query->execute();

(3) 建立一个session保存用户名

$_SESSION["username"] = $username;

(4) 利用url重写,传递session_id

$url = "main.php?sid=".session_id(); 
unset($db); 
echo "<font color=blue>登录成功,正在跳转!</font>" ; 
header ("Location:$url");

(5) 在需要跳转的页面,起始处加入
main.php

<?php 
header('Content-type:text/html; charset=utf-8'); 
$sessionid = $_GET['sid']; 
session_id($sessionid); 
session_start (); 
$username = $_SESSION["username"]; 
$db = new PDO('sqlite:softToken.db'); 
$sql = "select * from userinfo where username='$username' and sessionid='$sessionid';"; 
$query = $db->prepare($sql); 
$query->execute(); 
$user = $query->fetch(PDO::FETCH_OBJ); 
 
if ($user->username == ""){ 
session_destroy(); 
echo "<script language='javascript' type='text/javascript'>" ; 
echo "window.location.href = 'index.html';" ; 
echo "</script>" ; 
exit () ; 
} 
?> 
 
<html> 
<body> 
...... 
</body> 
</html>

以上就是php有效防止同一账号同一时间多次登录的解决方案,希望对大家解决同一账号同一时间多次登录问题有所帮助。

PHP 相关文章推荐
坏狼的PHP学习教程之第2天
Jun 15 PHP
PHP 批量更新网页内容实现代码
Jan 05 PHP
php中将html中的br换行符转换为文本输入中的换行符
Mar 26 PHP
php启用zlib压缩文件的配置方法
Jun 12 PHP
ThinkPHP表单自动提交验证实例教程
Jul 18 PHP
ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
Jul 22 PHP
php实现按照权重随机排序数据的方法
Jan 09 PHP
Yii实现Command任务处理的方法详解
Jul 14 PHP
PHP防止图片盗用(盗链)的方法小结
Nov 11 PHP
PHP中时间加减函数strtotime用法分析
Apr 26 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
Sep 16 PHP
PHP使用正则表达式实现过滤非法字符串功能示例
Jun 04 PHP
带你了解PHP7 性能翻倍的关键
Nov 19 #PHP
php curl模拟post请求和提交多维数组的示例代码
Nov 19 #PHP
phpStudy访问速度慢和启动失败的解决办法
Nov 19 #PHP
标准版Eclipse搭建PHP环境的详细步骤
Nov 18 #PHP
WordPress网站性能优化指南
Nov 18 #PHP
php+ajax实现无刷新分页
Nov 18 #PHP
如何使用php脚本给html中引用的js和css路径打上版本号
Nov 18 #PHP
You might like
一个可以找出源代码中所有中文的工具
2006/10/25 PHP
php共享内存段示例分享
2014/01/20 PHP
PHP把网页保存为word文件的三种方法
2014/04/01 PHP
js href的用法
2010/05/13 Javascript
Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
2010/06/11 Javascript
jQuery插件开发的两种方法及$.fn.extend的详解
2014/01/16 Javascript
解决Jquery鼠标经过不停滑动的问题
2014/03/03 Javascript
JSON格式化输出
2014/11/10 Javascript
Vue.js每天必学之过渡与动画
2016/09/06 Javascript
Ubuntu 16.04 64位中搭建Node.js开发环境教程
2016/10/19 Javascript
jquery获取table指定行和列的数据方法(当前选中行、列)
2016/11/07 Javascript
JS实现图片预加载之无序预加载功能代码
2017/05/12 Javascript
深入解析ES6中的promise
2018/11/08 Javascript
swiper自定义分页器的样式
2020/09/14 Javascript
用Python的Django框架来制作一个RSS阅读器
2015/07/22 Python
详解Python编程中time模块的使用
2015/11/20 Python
批处理与python代码混合编程的方法
2016/05/19 Python
基于python 二维数组及画图的实例详解
2018/04/03 Python
Python中实现变量赋值传递时的引用和拷贝方法
2018/04/29 Python
使用python爬取B站千万级数据
2018/06/08 Python
python远程调用rpc模块xmlrpclib的方法
2019/01/11 Python
python 实现查找文件并输出满足某一条件的数据项方法
2019/06/12 Python
python multiprocessing模块用法及原理介绍
2019/08/20 Python
Tensorflow中的dropout的使用方法
2020/03/13 Python
解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了
2020/04/07 Python
python3爬虫中异步协程的用法
2020/07/10 Python
全球性的在线婚纱礼服工厂:27dress.com
2019/03/21 全球购物
FirstCry阿联酋儿童和婴儿产品网上购物:FirstCry.ae
2021/02/22 全球购物
Servlet面试题库
2015/07/18 面试题
结构工程研究生求职信
2013/10/13 职场文书
社团文化节邀请函
2014/01/10 职场文书
总经理助理工作职责
2014/02/06 职场文书
教师教学评估方案
2014/05/09 职场文书
煤矿安全协议书
2014/08/20 职场文书
119消防日活动总结
2014/08/29 职场文书
MySQL创建高性能索引的全步骤
2021/05/02 MySQL