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删除特定数组内容并且重建数组索引的方法.
Mar 25 PHP
PHP获取数组中某元素的位置及array_keys函数应用
Jan 29 PHP
php获取数组长度的方法(有实例)
Oct 27 PHP
php使用filter过滤器验证邮箱 ipv6地址 url验证
Dec 25 PHP
php cookie中点号(句号)自动转为下划线问题
Oct 21 PHP
用 Composer构建自己的 PHP 框架之构建路由
Oct 30 PHP
PHP嵌套输出缓冲代码实例
May 12 PHP
PHP实现简单实用的分页类代码
Apr 08 PHP
Ubuntu彻底删除PHP7.0的方法
Jul 27 PHP
作为PHP程序员你要知道的另外一种日志
Jul 30 PHP
PHP正则表达式笔记与实例详解
May 09 PHP
laravel withCount 统计关联数量的方法
Oct 10 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
2021年最新CPU天梯图
2021/03/04 数码科技
php 注册时输入信息验证器的实现详解
2013/07/05 PHP
关于js和php对url编码的处理方法
2014/03/04 PHP
PHP中使用json数据格式定义字面量对象的方法
2014/08/20 PHP
索趣科技的答案
2007/02/07 Javascript
javascript 鼠标悬浮图片显示原图 移出鼠标后原图消失(多图)
2009/12/28 Javascript
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
2012/01/15 Javascript
Javascript控制页面链接在新窗口打开具体方法
2013/08/16 Javascript
javascript中不提供sleep功能如何实现这个功能
2014/05/27 Javascript
jQuery插件开发详细教程
2014/06/06 Javascript
用jquery模仿的a的title属性的例子
2014/10/22 Javascript
浅析javascript 定时器
2014/12/23 Javascript
AngularJS中的模块详解
2015/01/29 Javascript
js中跨域方法原理详解
2015/07/19 Javascript
详解JavaScript中|单竖杠运算符的使用方法
2016/05/23 Javascript
javascript简单链式调用案例分析
2017/05/10 Javascript
Angular项目中$scope.$apply()方法的使用详解
2017/07/26 Javascript
Angular浏览器插件Batarang介绍及使用
2018/02/07 Javascript
JS中的防抖与节流及作用详解
2019/04/01 Javascript
Vue 的双向绑定原理与用法揭秘
2020/05/06 Javascript
[07:37]DOTA2-DPC中国联赛2月2日Recap集锦
2021/03/11 DOTA
Python简单实现enum功能的方法
2016/04/25 Python
Python+Pandas 获取数据库并加入DataFrame的实例
2018/07/25 Python
python实现对任意大小图片均匀切割的示例
2018/12/05 Python
用Python+OpenCV对比图像质量的几种方法
2019/07/15 Python
Python flask框架如何显示图像到web页面
2020/06/03 Python
突袭HTML5之Javascript API扩展5—其他扩展(应用缓存/服务端消息/桌面通知)
2013/01/31 HTML / CSS
HTML5进度条特效
2014/12/18 HTML / CSS
HTML5 WebSocket实现点对点聊天的示例代码
2018/01/31 HTML / CSS
潘多拉珠宝英国官方网上商店:PANDORA英国
2018/06/12 全球购物
Ever New加拿大官网:彰显女性美
2018/10/05 全球购物
Europcar澳大利亚官网:全球汽车租赁领域的领导者
2019/03/24 全球购物
介绍一下Prototype的$()函数,$F()函数,$A()函数都是什么作用?
2014/03/05 面试题
维稳工作承诺书
2015/01/20 职场文书
2016教师校本研修心得体会
2016/01/08 职场文书
Java数据开发辅助工具Docker与普通程序使用方法
2021/09/15 Java/Android