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 页面跳转到另一个页面的多种方法方法总结
Jul 07 PHP
在WINDOWS中设置计划任务执行PHP文件的方法
Dec 19 PHP
php中长文章分页显示实现代码
Sep 29 PHP
php中用date函数获取当前时间有误的解决办法
Aug 02 PHP
php中require和require_once的区别说明
Feb 27 PHP
PHP goto语句简介和使用实例
Mar 11 PHP
php单例模式的简单实现方法
Jun 10 PHP
PHP自定义函数格式化json数据示例
Sep 14 PHP
php web环境和命令行环境下查找php.ini的位置
Jul 17 PHP
laravel5.5添加echarts实现画图功能的方法
Oct 09 PHP
Laravel框架Eloquent ORM删除数据操作示例
Dec 03 PHP
PHP+Mysql分布式事务与解决方案深入理解
Feb 27 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
变量在 PHP7 内部的实现(二)
2015/12/21 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
2017/04/18 PHP
PHP使用glob方法遍历文件夹下所有文件的实例
2018/10/17 PHP
数理公式,也可以这么唯美
2021/03/10 无线电
Jquery Validation插件防止重复提交表单的解决方法
2010/03/05 Javascript
js最简单的拖拽效果实现代码
2010/09/24 Javascript
js生成的验证码的实现与技术分析
2014/09/17 Javascript
原生JavaScript实现合并多个数组示例
2014/09/21 Javascript
使用Plupload实现直接上传附件至七牛云存储
2014/12/26 Javascript
jquery悬浮提示框完整实例
2016/01/13 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
2016/06/30 Javascript
原生JS实现首页进度加载动画
2016/09/14 Javascript
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
2016/12/15 Javascript
JSON字符串和JSON对象相互转化实例详解
2017/01/05 Javascript
JS和JQuery实现雪花飘落效果
2017/11/30 jQuery
vue项目实战总结篇
2018/02/11 Javascript
详解vue+webpack+express中间件接口使用
2018/07/17 Javascript
vue操作动画的记录animate.css实例代码
2019/04/26 Javascript
layui实现下拉框三级联动
2019/07/26 Javascript
JS+DIV实现拖动效果
2020/02/11 Javascript
微信小程序swiper组件实现抖音翻页切换视频功能的实例代码
2020/06/24 Javascript
[04:44]DOTA2 2017全国高校联赛视频回顾
2017/08/21 DOTA
[01:06]DOTA2小知识课堂 Ep.01 TP出门不要忘记帮队友灌瓶哦
2019/12/05 DOTA
[01:06:26]全国守擂赛第二周 Team Coach vs DeMonsTer
2020/04/28 DOTA
python 获取本机ip地址的两个方法
2013/02/25 Python
python实现的简单文本类游戏实例
2015/04/28 Python
python实现scrapy爬虫每天定时抓取数据的示例代码
2021/01/27 Python
详解HTML5将footer置于页面最底部的方法(CSS+JS)
2018/10/11 HTML / CSS
如何定义一个可复用的服务
2014/09/30 面试题
电大物流学生的自我评价
2013/10/25 职场文书
岗位职责定义及内容
2013/11/08 职场文书
办公室内勤工作职责
2013/12/11 职场文书
电气个人求职信范文
2014/02/04 职场文书
未受刑事制裁公证证明
2014/09/20 职场文书
教师研修随笔感言
2015/11/18 职场文书
Golang Gob编码(gob包的使用详解)
2021/05/07 Golang