程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php有效防止同一用戶多次登錄,php有效防止登錄

php有效防止同一用戶多次登錄,php有效防止登錄

編輯:關於PHP編程

php有效防止同一用戶多次登錄,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有效防止同一賬號同一時間多次登錄的解決方案,希望對大家解決同一賬號同一時間多次登錄問題有所幫助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved