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 高级课程笔记 面向对象
Jun 21 PHP
PHP中10个不常见却非常有用的函数
Mar 21 PHP
php中serialize序列化与json性能测试的示例分析
Apr 27 PHP
php备份数据库类分享
Apr 14 PHP
PHP使用ODBC连接数据库的方法
Jul 18 PHP
PHP导出Excel实例讲解
Jan 24 PHP
composer.lock文件的作用
Feb 03 PHP
yii2.0数据库迁移教程【多个数据库同时同步数据】
Oct 08 PHP
PHP内存缓存功能memcached示例
Oct 19 PHP
PHP生成腾讯云COS接口需要的请求签名
May 20 PHP
在Laravel5.6中使用Swoole的协程数据库查询
Jun 15 PHP
基于PHP的登录和注册的功能的实现
Aug 06 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实现SAE上使用storage上传与下载文件的方法
2015/06/29 PHP
PHP结合Ueditor并修改图片上传路径
2016/10/16 PHP
php监测数据是否成功插入到Mysql数据库的方法
2016/11/25 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
js 页面输出值
2008/11/30 Javascript
JavaScript 事件参考手册
2008/12/24 Javascript
Document对象内容集合(比较全)
2010/09/06 Javascript
JS检测输入字符是否包含非法字符的示例代码
2014/02/11 Javascript
给应用部分的js代码设定一个统一的入口
2014/06/15 Javascript
Javascript获取当前时间函数和时间操作小结
2014/10/01 Javascript
手机Web APP如何实现分享多平台功能
2016/08/19 Javascript
Angular在一个页面中使用两个ng-app的方法
2017/02/20 Javascript
angular使用bootstrap方法手动启动的实例代码
2017/07/18 Javascript
详解node nvm进行node多版本管理
2017/10/21 Javascript
bootstrap datetimepicker控件位置异常的解决方法
2017/11/23 Javascript
判断jQuery是否加载完成,没完成继续判断的解决方法
2017/12/06 jQuery
详解Vue Elementui中的Tag与页面其它元素相互交互的两三事
2018/09/25 Javascript
vue实现信息管理系统
2020/05/30 Javascript
python使用append合并两个数组的方法
2015/04/28 Python
Python中for循环和while循环的基本使用方法
2015/08/21 Python
Python使用urllib2模块抓取HTML页面资源的实例分享
2016/05/03 Python
python的多重继承的理解
2017/08/06 Python
Python3.6简单反射操作示例
2018/06/14 Python
django 发送邮件和缓存的实现代码
2018/07/18 Python
scrapy结合selenium解析动态页面的实现
2020/09/28 Python
通过canvas转换颜色为RGBA格式及性能问题的解决
2019/11/22 HTML / CSS
Alba Moda德国网上商店:意大利时尚女装销售
2016/11/14 全球购物
英国著名书店:Foyles
2018/12/01 全球购物
德国高尔夫商店:Par71.de
2020/11/29 全球购物
linux面试题参考答案(2)
2015/12/06 面试题
毕业生个人的求职信范文
2013/12/03 职场文书
材料成型及控制工程专业求职信
2014/06/19 职场文书
企业员工爱岗敬业演讲稿
2014/08/26 职场文书
大学生撤销处分思想汇报
2014/09/12 职场文书
公务员四风问题对照检查材料整改措施
2014/09/26 职场文书
2015年资料员工作总结
2015/04/25 职场文书