【发布时间】:2009-11-23 08:36:53
【问题描述】:
我正在使用 PHP + MySQL。
无论如何我可以控制并发用户(1 个用户只有 1 个密钥)访问 我的php页面?不允许将不同机器的访问密钥复制到我的 php 中,如何通过我的 php 会话/cookies 处理这个问题?
任何建议将不胜感激!
【问题讨论】:
我正在使用 PHP + MySQL。
无论如何我可以控制并发用户(1 个用户只有 1 个密钥)访问 我的php页面?不允许将不同机器的访问密钥复制到我的 php 中,如何通过我的 php 会话/cookies 处理这个问题?
任何建议将不胜感激!
【问题讨论】:
您可以尝试使用此解决方案。
concurrent_users.php
// created cookie with createdSessionID
$cookie_array = explode("-", $_COOKIE['cookie']); //retrieve contents of cookie in an array
//print("cookie:" . $cookie_array[0]); //display the content
//Retrieve data from TBL_LogUsersCurrent
$QueryI = "SELECT * FROM TBL_LogUsersCurrent WHERE UserID=".$_SESSION['SessionUserID']."";
$ResultI = mysql_query($QueryI);
//fetch the query result
$Row = mysql_fetch_array($ResultI,MYSQL_NUM);
$Arr_Row = $Row[4];
//echo "database:" .$Arr_Row;
//compare the createdSessionID in cookie and database
if ($cookie_array[0] != $Arr_Row) {
//redirect the user to login page if already the user has logged in
header ("Location: http://" . $_SERVER['HTTP_HOST'] . "/". $SystemFolder . "/index.html?AS=1$extraA");
mysql_close();
//Deleting Cookies:Expiration date should be in the past, to trigger the removal mechanism in the browser.
setcookie("cookie", $_SESSION['createdSessionID'],time() - 3600);
exit();
}
【讨论】:
当然可以。当用户尝试登录时,创建一个会话表并检查已登录的用户。当该用户已注册会话时,已拒绝登录。
您必须记住的唯一一件事是设置保活时间时的会话清理。
【讨论】: