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脚本的10个技巧(5)
Oct 09 PHP
php 将bmp图片转为jpg等其他任意格式的图片
Jun 29 PHP
Yii框架获取当前controlle和action对应id的方法
Dec 03 PHP
php将HTML表格每行每列转为数组实现采集表格数据的方法
Apr 03 PHP
基于CakePHP实现的简单博客系统实例
Jun 28 PHP
codeigniter实现get分页的方法
Jul 10 PHP
WIFI万能钥匙密码查询接口实例
Sep 28 PHP
PHP编写RESTful接口
Feb 23 PHP
教你在header中隐藏php的版本信息
Aug 10 PHP
PHP写的简单数字验证码实例
May 23 PHP
thinkphp分页集成实例
Jul 24 PHP
PHP+Ajax实现的博客文章添加类别功能示例
Mar 29 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
文件系统基本操作类
2006/11/23 PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
2014/06/19 PHP
php检查日期函数checkdate用法实例
2015/03/19 PHP
PHP和MySql中32位和64位的整形范围是多少
2016/02/18 PHP
php实现等比例压缩图片
2018/07/26 PHP
基于JQuery的简单实现折叠菜单代码
2010/09/15 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件
2011/12/21 Javascript
Javascript中设置默认参数值示例
2014/09/11 Javascript
Position属性之relative用法
2015/12/14 Javascript
Hallo.js基于jQuery UI所见即所得的Web编辑器
2016/01/26 Javascript
JS弹出窗口插件zDialog简单用法示例
2016/06/12 Javascript
微信小程序五星评分效果实现代码
2017/04/06 Javascript
JS实现汉字与Unicode码相互转换的方法详解
2017/04/28 Javascript
JS时间控制实现动态效果的实例讲解
2017/07/31 Javascript
JavaScript 完成注册页面表单校验的实例
2017/08/19 Javascript
NodeJS爬虫实例之糗事百科
2017/12/14 NodeJs
vue+axios实现文件下载及vue中使用axios的实例
2018/09/21 Javascript
vue通过指令(directives)实现点击空白处收起下拉框
2018/12/06 Javascript
JavaScript中Dom操作实例详解
2019/07/08 Javascript
JavaScript中变量提升机制示例详解
2019/12/27 Javascript
[12:29]2018国际邀请赛 开幕秀
2018/08/22 DOTA
Python+selenium 获取浏览器窗口坐标、句柄的方法
2018/10/14 Python
python实现年会抽奖程序
2019/01/22 Python
python3.6使用tkinter实现弹跳小球游戏
2019/05/09 Python
Python如何在bool函数中取值
2020/09/21 Python
以设计师精品品质提供快速时尚:Mostata
2019/05/10 全球购物
如何理解transaction事务的概念
2015/05/27 面试题
清正廉洁演讲稿
2014/05/22 职场文书
会计学自荐信
2014/06/03 职场文书
小学捐书活动总结
2014/07/05 职场文书
2014年大学生预备党员思想汇报1000字
2014/09/13 职场文书
人大代表选举标语
2014/10/07 职场文书
学校德育工作总结2015
2015/05/11 职场文书
2015大学生暑假调查报告
2015/07/13 职场文书
考研经验交流会策划书
2015/11/02 职场文书
React-vscode使用jsx语法的问题及解决方法
2021/06/21 Javascript