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 ignore_user_abort与register_shutdown_function 使用方法
Jun 14 PHP
php面向对象全攻略 (十七) 自动加载类
Sep 30 PHP
php 使用post,get的一种简洁方式
Apr 25 PHP
深入php处理整数函数的详解
Jun 09 PHP
探寻PHP脚本不报错的原因
Jun 12 PHP
PHP输出英文时间日期的安全方法(RFC 1123格式)
Jun 13 PHP
在php和MySql中计算时间差的方法详解
Mar 27 PHP
php实现在多维数组中查找特定value的方法
Jul 29 PHP
curl 出现错误的调试方法(必看)
Feb 13 PHP
基于CI(CodeIgniter)框架实现购物车功能的方法
Apr 09 PHP
ThinkPHP框架整合微信支付之JSAPI模式图文详解
Apr 09 PHP
PHP session垃圾回收机制实例分析
Jun 28 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
安健A254立体声随身听的分析与打磨
2021/03/02 无线电
刚才在简化php的库,结果发现很多东西
2006/12/31 PHP
php Static关键字实用方法
2010/06/04 PHP
PHP面向对象法则
2012/02/23 PHP
解析php获取字符串的编码格式的方法(函数)
2013/06/21 PHP
PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数
2014/06/19 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
2019/12/20 PHP
jquery1.5.1中根据元素ID获取元素对象的代码
2011/04/02 Javascript
JS 自定义带默认值的函数
2011/07/21 Javascript
js多级树形弹出一个小窗口层(非常好用)实例代码
2013/03/19 Javascript
JS 修改URL参数(实现代码)
2013/07/08 Javascript
PHP使用方法重载实现动态创建属性的get和set方法
2014/11/17 Javascript
tablesorter.js表格排序使用方法(支持中文排序)
2017/02/10 Javascript
vue注册组件的几种方式总结
2018/03/08 Javascript
vue配置多页面的实现方法
2018/05/22 Javascript
详解如何使用babel进行es6文件的编译
2018/05/29 Javascript
opencv 识别微信登录验证滑动块位置
2018/08/07 Javascript
解决layui table表单提示数据接口请求异常的问题
2019/09/24 Javascript
如何在Vue中抽离接口配置文件
2019/10/31 Javascript
[05:20]2018DOTA2亚洲邀请赛主赛事第三日战况回顾 LGD率先挺进胜者组决赛
2018/04/06 DOTA
简单介绍Python中的try和finally和with方法
2015/05/05 Python
Linux RedHat下安装Python2.7开发环境
2017/05/20 Python
浅析Python语言自带的数据结构有哪些
2019/08/27 Python
python创建ArcGIS shape文件的实现
2019/12/06 Python
pandas中read_csv的缺失值处理方式
2019/12/19 Python
欧洲、亚洲、非洲和拉丁美洲的度假套餐:Great Value Vacations
2019/03/30 全球购物
EJB3推出JPA的原因
2013/10/16 面试题
计算机专业学生求职信分享
2013/12/15 职场文书
元旦联欢会策划方案
2014/06/11 职场文书
应届毕业生求职信范文
2014/07/07 职场文书
坚守艰苦奋斗精神坚决反对享乐主义整改措施
2014/09/17 职场文书
领导班子在批评与自我批评座谈会上的发言
2014/09/28 职场文书
庆六一宣传标语
2014/10/08 职场文书
2014年卫生工作总结
2014/11/27 职场文书
红与黑读书笔记
2015/06/29 职场文书
python实战之一步一步教你绘制小猪佩奇
2021/04/22 Python