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&amp;java(三)
Oct 09 PHP
一个用mysql_odbc和php写的serach数据库程序
Oct 09 PHP
在同一窗体中使用PHP来处理多个提交任务
May 08 PHP
批量修改RAR文件注释的php代码
Nov 20 PHP
PHP中$this和$that指针使用实例
Jan 06 PHP
php获取指定范围内最接近数的方法
Jun 02 PHP
PHP isset()与empty()的使用区别详解
Feb 10 PHP
PHP中Notice错误常见解决方法
Apr 28 PHP
利用Laravel生成Gravatar头像地址的优雅方法
Dec 30 PHP
PHP PDOStatement::nextRowset讲解
Feb 01 PHP
laravel框架的安装与路由实例分析
Oct 11 PHP
Laravel开启跨域请求的方法
Oct 13 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中判断一个字符串包含另一个字符串的方法
2007/03/19 PHP
PHP 开发环境配置(Zend Server安装)
2010/04/28 PHP
PHP 防恶意刷新实现代码
2010/05/16 PHP
php图像处理函数大全(推荐收藏)
2013/07/11 PHP
PHP连接数据库实现注册页面的增删改查操作
2016/03/27 PHP
php中通用的excel导出方法实例
2017/12/30 PHP
RSA实现JS前端加密与PHP后端解密功能示例
2019/08/05 PHP
Visual Studio中的jQuery智能提示设置方法
2010/03/27 Javascript
jQuery学习笔记之jQuery的事件
2010/12/22 Javascript
js字符串日期yyyy-MM-dd转化为date示例代码
2014/03/06 Javascript
JavaScript中的标签语句用法分析
2015/02/10 Javascript
JavaScript中数据结构与算法(一):栈
2015/06/19 Javascript
jquery判断输入密码两次是否相等
2020/04/22 Javascript
seajs中模块依赖的加载处理实例分析
2017/10/10 Javascript
webpack配置打包后图片路径出错的解决
2018/04/26 Javascript
详解vue组件开发脚手架
2018/06/15 Javascript
迅速了解一下ES10中Object.fromEntries的用法使用
2019/03/05 Javascript
Nodejs核心模块之net和http的使用详解
2019/04/02 NodeJs
详解vue中router-link标签所必备了解的属性
2019/04/15 Javascript
原生js实现trigger方法示例代码
2019/05/22 Javascript
vue 全局封装loading加载教程(全局监听)
2020/11/05 Javascript
如何解决django配置settings时遇到Could not import settings 'conf.local'
2014/11/18 Python
python输出指定月份日历的方法
2015/04/23 Python
基于python 处理中文路径的终极解决方法
2018/04/12 Python
对Python中Iterator和Iterable的区别详解
2018/10/18 Python
用sqlalchemy构建Django连接池的实例
2019/08/29 Python
Keras—embedding嵌入层的用法详解
2020/06/10 Python
Pytorch之Tensor和Numpy之间的转换的实现方法
2020/09/03 Python
python 密码学示例——理解哈希(Hash)算法
2020/09/21 Python
python3爬虫中多线程的优势总结
2020/11/24 Python
Currentbody西班牙:美容仪专家
2019/09/28 全球购物
年度考核评语
2014/01/19 职场文书
运动会跳远广播稿
2014/02/04 职场文书
青春雷锋观后感
2015/06/10 职场文书
企业管理制度设计时要注意的几种“常见病”!
2019/04/19 职场文书
HTML5 语义化标签(移动端必备)
2021/08/23 HTML / CSS