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往windows中添加用户
Dec 06 PHP
php使用Smarty的相关注意事项及访问变量的几种方式
Dec 08 PHP
用PHP+MySQL搭建聊天室功能实例代码
Aug 20 PHP
php防止伪造的数据从URL提交方法
Jun 27 PHP
PHP使用range协议实现输出文件断点续传代码实例
Jul 04 PHP
PHP中怎样防止SQL注入分析
Oct 23 PHP
PHP中ID设置自增后不连续的原因分析及解决办法
Aug 21 PHP
Yii2语言国际化的配置教程
Aug 19 PHP
PHP html_entity_decode()函数讲解
Feb 25 PHP
PHP Redis扩展无法加载的问题解决方法
Aug 22 PHP
tp5.1 框架路由操作-URL生成实例分析
May 26 PHP
PHP使用非对称加密算法RSA
Apr 21 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 提速工具eAccelerator 配置参数详解
2010/05/16 PHP
解析PHP正则提取或替换img标记属性
2013/06/26 PHP
ThinkPHP中limit()使用方法详解
2016/04/19 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
Jquery优化效率 提升性能解决方案
2010/09/06 Javascript
javascript算法题 求任意一个1-9位不重复的N位数在该组合中的大小排列序号
2012/07/21 Javascript
基于jquery的时间段实现代码
2012/08/02 Javascript
解决javascript:window.close()在chrome,Firefox下失效的问题
2013/05/07 Javascript
模拟电子签章盖章效果的jQuery插件源码
2013/06/24 Javascript
JQuery悬停控制图片轮播——代码简单
2015/08/05 Javascript
jquery插件uploadify实现带进度条的文件批量上传
2015/12/13 Javascript
JS控制静态页面传递参数并获取参数应用
2016/08/10 Javascript
Vue2 配置 Axios api 接口调用文件的方法
2017/11/13 Javascript
vue-cli整合vuex的时候,修改actions和mutations,实现热部署的方法
2018/09/19 Javascript
vue.js仿hover效果的实现方法示例
2019/01/28 Javascript
通过cordova将vue项目打包为webapp的方法
2019/02/02 Javascript
Node.js Stream ondata触发时机与顺序的探索
2019/03/08 Javascript
简单了解JavaScript中常见的反模式
2019/06/21 Javascript
JS实现商品橱窗特效
2020/01/09 Javascript
python用来获得图片exif信息的库实例分析
2015/03/16 Python
从Python的源码浅要剖析Python的内存管理
2015/04/16 Python
详解python中的json的基本使用方法
2016/12/21 Python
使用Python实现windows下的抓包与解析
2018/01/15 Python
python 获取文件下所有文件或目录os.walk()的实例
2018/04/23 Python
Python数据报表之Excel操作模块用法分析
2019/03/11 Python
Python  Django 母版和继承解析
2019/08/09 Python
妙用itchat! python实现久坐提醒功能
2019/11/25 Python
Python 如何测试文件是否存在
2020/07/31 Python
c语言常见笔试题总结
2016/09/05 面试题
政府法律服务方案
2014/06/14 职场文书
ktv周年庆活动方案
2014/08/18 职场文书
家庭贫困证明范本(经典版)
2014/09/22 职场文书
庆七一活动简报
2015/07/20 职场文书
社会心理学学习心得体会
2016/01/22 职场文书
Ajax请求超时与网络异常处理图文详解
2021/05/23 Javascript
Python连接Postgres/Mysql/Mongo数据库基本操作大全
2021/06/29 Python