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 相关文章推荐
模拟xcopy的函数
Oct 09 PHP
php数据库连接
Oct 09 PHP
BBS(php &amp; mysql)完整版(四)
Oct 09 PHP
php中处理模拟rewrite 效果
Dec 09 PHP
Php Cookie的一个使用注意点
Nov 08 PHP
php 5.3.5安装memcache注意事项小结
Apr 12 PHP
Zend的Registry机制的使用说明
May 02 PHP
destoon调用discuz论坛中带图片帖子的实现方法
Aug 21 PHP
PHP中防止SQL注入方法详解
Dec 25 PHP
PHP实现的简单异常处理类示例
May 04 PHP
PHP异常处理定义与使用方法分析
Jul 25 PHP
php如何利用pecl安装mongodb扩展详解
Jan 09 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实现的英文名字全拼随机排号脚本
2014/07/04 PHP
PHP使用PDO连接ACCESS数据库
2015/03/05 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
JS实现浏览器菜单命令
2006/09/05 Javascript
jquery插件制作 自增长输入框实现代码
2012/08/17 jQuery
jquery获取特定name所有选中的checkbox,支持IE9标准模式
2013/03/18 Javascript
js获得当前时区夏令时发生和终止的时间代码
2014/02/23 Javascript
jQuery实现鼠标经过弹出提示信息的地图热点效果
2015/08/07 Javascript
微信jssdk在iframe页面失效问题的解决措施
2016/03/03 Javascript
JavaScript的Backbone.js框架入门学习指引
2016/05/07 Javascript
AngularJS的ng Http Request与response格式转换方法
2016/11/07 Javascript
利用VUE框架,实现列表分页功能示例代码
2017/01/12 Javascript
关于JavaScript中forEach和each用法浅析
2017/07/27 Javascript
用js实现每隔一秒刷新时间的实例(含年月日时分秒)
2017/10/25 Javascript
浅谈jquery fullpage 插件增加头部和版权的方法
2018/03/20 jQuery
React 父子组件通信的实现方法
2019/12/05 Javascript
TypeScript之调用栈的实现
2019/12/31 Javascript
9种方法优化jQuery代码详解
2020/02/04 jQuery
解决Vue 移动端点击出现300毫秒延迟的问题
2020/07/21 Javascript
vue图片裁剪插件vue-cropper使用方法详解
2020/12/16 Vue.js
python链接Oracle数据库的方法
2015/06/28 Python
python 写入csv乱码问题解决方法
2016/10/23 Python
python学生信息管理系统(完整版)
2020/04/05 Python
pandas中apply和transform方法的性能比较及区别介绍
2018/10/30 Python
浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器
2019/03/11 Python
PyQt5组件读取参数的实例
2019/06/25 Python
python爬虫 线程池创建并获取文件代码实例
2019/09/28 Python
python实现银行账户系统
2021/02/22 Python
奥巴马开学演讲稿
2014/05/15 职场文书
工厂仓管员岗位职责
2015/04/01 职场文书
世界文化遗产导游词
2019/08/07 职场文书
Python requests库参数提交的注意事项总结
2021/03/29 Python
Nginx反向代理至go-fastdfs案例讲解
2021/08/02 Servers
css实现两栏布局,左侧固定宽,右侧自适应的多种方法
2021/08/07 HTML / CSS
CSS元素定位之通过元素的标签或者元素的id、class属性定位详解
2022/09/23 HTML / CSS