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 相关文章推荐
一个简单实现多条件查询的例子
Oct 09 PHP
PHP_MySQL教程-第一天
Mar 18 PHP
PHP实现MVC开发得最简单的方法――模型
Apr 10 PHP
php框架Phpbean说明
Jan 10 PHP
基于php实现长连接的方法与注意事项的问题
May 10 PHP
php查询相似度最高的字符串的方法
Mar 12 PHP
thinkPHP5.0框架API优化后的友好性分析
Mar 17 PHP
PHP实现的最大正向匹配算法示例
Dec 19 PHP
PHP实现数组根据某个单元字段排序操作示例
Aug 01 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
Apr 10 PHP
通过实例解析PHP数据类型转换方法
Jul 11 PHP
PHP队列场景以及实现代码实例详解
Feb 26 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
php class中self,parent,this的区别以及实例介绍
2013/04/24 PHP
PHP mysql与mysqli事务使用说明 分享
2013/08/17 PHP
Laravel与CI框架中截取字符串函数
2016/05/08 PHP
PHP用continue跳过本次循环中剩余代码的注意点
2017/06/27 PHP
一个对于js this关键字的问题
2007/01/09 Javascript
jquery 入门教程 [翻译] 推荐
2009/08/17 Javascript
extjs 学习笔记 四 带分页的grid
2009/10/20 Javascript
AngularJS入门教程之学习环境搭建
2014/12/06 Javascript
Nodejs学习笔记之入门篇
2015/04/16 NodeJs
js父页面中使用子页面的方法
2016/01/09 Javascript
jQuery弹出遮罩层效果完整示例
2016/09/13 Javascript
基于jQuery ligerUI实现分页样式
2016/09/18 Javascript
使用vue.js实现checkbox的全选和多个的删除功能
2017/02/17 Javascript
js实现仿购物车加减效果
2017/03/01 Javascript
ES6正则表达式扩展笔记
2017/07/25 Javascript
JavaScript实现开关等效果
2017/09/08 Javascript
layui 监听表格复选框选中值的方法
2018/08/15 Javascript
Vue 实现列表动态添加和删除的两种方法小结
2018/09/07 Javascript
Vue中使用sass实现换肤功能
2018/09/07 Javascript
JS/HTML5游戏常用算法之碰撞检测 地图格子算法实例详解
2018/12/12 Javascript
js实现小时钟效果
2020/03/25 Javascript
[00:36]DOTA2风云人物相约完美“圣”典 12月17日不见不散
2016/11/30 DOTA
Django rest framework工具包简单用法示例
2018/07/20 Python
在Python中输入一个以空格为间隔的数组方法
2018/11/13 Python
opencv3/C++ 平面对象识别&amp;透视变换方式
2019/12/11 Python
Pandas 解决dataframe的一列进行向下顺移问题
2019/12/27 Python
Django实现将一个字典传到前端显示出来
2020/04/03 Python
小学生自我评价范例
2013/09/24 职场文书
给国外客户的邀请函
2014/01/30 职场文书
感恩的演讲稿
2014/05/06 职场文书
党员民主评议总结
2014/10/20 职场文书
党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
财务整改报告范文
2014/11/05 职场文书
老人与海读书笔记
2015/06/26 职场文书
2015中学学校工作总结
2015/07/20 职场文书
学生病假条范文
2015/08/17 职场文书