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 相关文章推荐
第1次亲密接触PHP5(1)
Oct 09 PHP
PHP5.3.1 不再支持ISAPI
Jan 08 PHP
php中常用的预定义变量小结
May 09 PHP
php打开文件fopen函数的使用说明
Jul 05 PHP
PHP strstr 函数判断字符串是否否存在的实例代码
Sep 28 PHP
PHP swfupload图片上传的实例代码
Sep 30 PHP
thinkphp实现图片上传功能分享
Mar 04 PHP
php获取网站百度快照日期的方法
Jul 29 PHP
thinkPHP实现将excel导入到数据库中的方法
Apr 22 PHP
PHP实现Redis单据锁以及防止并发重复写入
Apr 10 PHP
laravel邮件发送的实现代码示例
Jan 31 PHP
PhpStorm2020 + phpstudyV8 +XDebug的教程详解
Sep 17 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 获取完整url地址
2008/12/20 PHP
PHP 获取远程文件大小的3种解决方法
2013/07/11 PHP
php简单计算页面加载时间的方法
2015/06/19 PHP
详解PHP数组赋值方法
2015/11/07 PHP
PHP版本的选择5.2.17 5.3.27 5.3.28 5.4 5.5兼容性问题分析
2016/04/04 PHP
PHP安装GeoIP扩展根据IP获取地理位置及计算距离的方法
2016/07/01 PHP
PHP面向对象程序设计之命名空间与自动加载类详解
2016/12/02 PHP
js substr支持中文截取函数代码(中文是双字节)
2013/04/17 Javascript
js获取dom的高度和宽度(可见区域及部分等等)
2013/06/13 Javascript
parentElement,srcElement的使用小结
2014/01/13 Javascript
JavaScript实现同时调用多个函数的方法
2015/11/09 Javascript
浅析Bootstrap缩略图组件与警示框组件
2016/04/29 Javascript
js仿淘宝和百度文库的评分功能
2016/05/15 Javascript
vue.js初学入门教程(2)
2016/11/07 Javascript
js获取元素的偏移量offset简单方法(必看)
2017/07/05 Javascript
基于jQuery选择器之表单对象属性筛选选择器的实例
2017/09/19 jQuery
vuex中使用对象展开运算符的示例
2017/09/25 Javascript
echarts鼠标覆盖高亮显示节点及关系名称详解
2018/03/17 Javascript
JS使用Prim算法和Kruskal算法实现最小生成树
2019/01/17 Javascript
JQuery Ajax跨域调用和非跨域调用问题实例分析
2019/04/16 jQuery
Js通过AES加密后PHP用Openssl解密的方法
2019/07/12 Javascript
微信小程序iBeacon测距及稳定程序的实现解析
2019/07/31 Javascript
Python学习资料
2007/02/08 Python
Python实现图片转字符画的示例
2017/08/22 Python
Python3处理HTTP请求的实例
2018/05/10 Python
浅谈python中真正关闭socket的方法
2018/12/18 Python
Python爬虫学习之获取指定网页源码
2019/07/30 Python
打包PyQt5应用时的注意事项
2020/02/14 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
2020/04/10 Python
怀旧收藏品和经典纪念品:Betty’s Attic
2018/08/29 全球购物
俄罗斯女装店:12storeez
2019/10/25 全球购物
电力公司个人求职信范文
2014/02/04 职场文书
大学生毕业求职自荐书范文
2014/02/04 职场文书
小学班级特色活动方案
2014/08/31 职场文书
师德师风剖析材料
2014/09/30 职场文书
clear 万能清除浮动(clearfix:after)
2023/05/21 HTML / CSS