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 相关文章推荐
强烈声明: 不要使用(include/require)_once
Jun 06 PHP
在PHP上显示JFreechart画的统计图方法
Nov 03 PHP
php中filter函数验证、过滤用户输入的数据
Jan 13 PHP
PHP函数addslashes和mysql_real_escape_string的区别
Apr 22 PHP
ThinkPHP连接Oracle数据库
Apr 22 PHP
php实现替换手机号中间数字为*号及隐藏IP最后几位的方法
Nov 16 PHP
实例分析PHP中PHPMailer发邮件
Dec 13 PHP
yii2 上传图片的示例代码
Nov 02 PHP
PHP序列化的四种实现方法与横向对比
Nov 29 PHP
PHP连接及操作PostgreSQL数据库的方法详解
Jan 30 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
Feb 18 PHP
ThinkPHP5.1验证码功能实现的示例代码
Jun 08 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利用COM对象访问SQLServer、Access
2006/10/09 PHP
PHP实现把MySQL数据库导出为.sql文件实例(仿PHPMyadmin导出功能)
2014/05/10 PHP
深入剖析浏览器退出之后php还会继续执行么
2016/05/17 PHP
PHP session 会话处理函数
2016/06/06 PHP
PHP-FPM的配置与优化讲解
2019/03/15 PHP
JScript 脚本实现文件下载 一般用于下载木马
2009/10/29 Javascript
Jquery通过Ajax方式来提交Form表单的具体实现
2013/11/07 Javascript
键盘上一张下一张兼容IE/google/firefox等浏览器
2014/01/28 Javascript
jquery 新建的元素事件绑定问题解决方案
2014/06/12 Javascript
javascript跨域原因以及解决方案分享
2015/04/08 Javascript
jquery.gridrotator实现响应式图片展示画廊效果
2015/06/23 Javascript
Angularjs使用directive自定义指令实现attribute继承的方法详解
2016/08/05 Javascript
Angularjs CURD 详解及实例代码
2016/09/14 Javascript
JavaScript实现邮箱地址自动匹配功能代码
2016/11/28 Javascript
angularjs $http实现form表单提交示例
2017/06/09 Javascript
JS实现提交表单前的数字及邮箱校检功能
2017/11/13 Javascript
vue实现商城上货组件简易版
2017/11/27 Javascript
node.js中npm包管理工具用法分析
2020/02/14 Javascript
vue 内联样式style中的background用法说明
2020/08/05 Javascript
VUE使用 wx-open-launch-app 组件开发微信打开APP功能
2020/08/11 Javascript
Python2.x利用commands模块执行Linux shell命令
2016/03/11 Python
Python中工作日类库Busines Holiday的介绍与使用
2017/07/06 Python
python 实现兔子生兔子示例
2019/11/21 Python
Django Haystack 全文检索与关键词高亮的实现
2020/02/17 Python
使用celery和Django处理异步任务的流程分析
2020/02/19 Python
天巡全球:Skyscanner Global
2017/06/20 全球购物
Java基础知识面试要点
2016/07/29 面试题
金智子午JAVA面试题
2015/09/04 面试题
Hashtable 添加内容的方式有哪几种,有什么区别?
2012/04/08 面试题
简历中自我评价分享
2013/10/09 职场文书
办公室文秘岗位职责
2013/11/15 职场文书
公积金单位接收函
2014/01/11 职场文书
技术经济专业求职信
2014/09/03 职场文书
党的群众路线教育实践活动心得体会(乡镇)
2014/11/03 职场文书
独生子女证明范本
2015/06/19 职场文书
详解Java实现设计模式之责任链模式
2021/06/23 Java/Android