php有效防止同一用户多次登录

 更新时间:2015年11月19日 11:11:02   投稿:lijiao  
这篇文章主要介绍了php有效防止同一账号同一时间多次登录的方法,感兴趣的小伙伴们可以参考一下

【问题描述】:同一用户在同一时间多次登录如果不能检测出来,是危险的。因为,你无法知道是否有其他用户在登录你的账户。如何禁止同一用户多次登录呢?
【解决方案】
(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递归调用数组值并用其执行指定函数的方法

    这篇文章主要介绍了PHP递归调用数组值并用其执行指定函数的方法,涉及php数组调用与函数执行的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • 浅析SVN常见问题及解决方法

    浅析SVN常见问题及解决方法

    本篇文章是对SVN常见问题及解决方法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • PHP中的正则表达式函数介绍

    PHP中的正则表达式函数介绍

    PHP中的正则表达式函数介绍,需要的朋友可以参考下
    2012-02-02
  • php中inlcude()性能对比详解

    php中inlcude()性能对比详解

    PHP程序员最常用的两个函数莫过于require_once和include了,通过这两个函数,我们可以使用其他类库中定义的类等对象。但很多人在使用包含相同目录下的其他文件时,仅仅简单使用下面的代码进行文件引用
    2012-09-09
  • PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法

    PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法

    这篇文章主要介绍了PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法,需要的朋友可以参考下
    2014-05-05
  • MySQL修改密码方法总结

    MySQL修改密码方法总结

    MySQL修改密码方法总结 首先要声明一点,大部分情况下,修改MySQL是需要有mysql里的root权限的,所以一般用户无法更改密码,除非请求管理员。
    2008-03-03
  • php mysql实现mysql_select_db选择数据库

    php mysql实现mysql_select_db选择数据库

    在PHP中,与MySQL服务器建立连接后,需要确定所要连接的数据库,此时我们可以使用mysql_select_db函数,该函数用于选择需要操作的数据库,需要的朋友可以参考下
    2016-12-12
  • 关于php unset对json_encode的影响详解

    关于php unset对json_encode的影响详解

    这篇文章主要给大家介绍了关于php unset对json_encode的影响的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • Linux环境下php实现给网站截图的方法

    Linux环境下php实现给网站截图的方法

    这篇文章主要介绍了Linux环境下php实现给网站截图的方法,结合实例形式较为详细的分析了Linux环境下php实现网站截图的具体步骤与相关操作技巧,需要的朋友可以参考下
    2016-05-05
  • PHP+MySQL之Insert Into数据插入用法分析

    PHP+MySQL之Insert Into数据插入用法分析

    这篇文章主要介绍了PHP+MySQL之Insert Into数据插入用法,实例分析了php+mysql基于Insert Into语句实现数据插入的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09

最新评论