返回列表 回复 发帖

[转帖]在线人数统计源代码.

在线人数统计源代码.
db层:   
db_online.php   
//该函数使用户自己在线,并且检查其他用户的在线情况   
function checkOnline($userid,$tempid=null)   
{   
$conn = connect();   
//对于所有用户   
//先设置自己为在线   
$stmt = "UPDATE ".DB_NAME.".USER SET IsOnline='Y' WHERE UserID=".$userid;   
$result = query($stmt,$conn);   
//info($stmt);   
//如果当前用户是游客   
if ($tempid != null)   
{   
$stmt = "SELECT TempID FROM ".DB_NAME.".TEMPUSER WHERE   
TempID=".$tempid;   
$result = query($stmt,$conn);   
//info($stmt);   
//如果该游客还在线   
if ($row = fetch_array($result))   
{   
$stmt = "UPDATE ".DB_NAME.".TEMPUSER SET   
RequestTime='".getCurrentTime()."' WHERE TempID=".$tempid;   
$result = query($stmt,$conn);   
//info($stmt);   
}   
//该游客已经离线   
else   
{   
$stmt = "INSERT INTO ".DB_NAME.".TEMPUSER   
VALUES('".$tempid."','".getCurrentTime()."')";   
$result = query($stmt,$conn);   
//info($stmt);   
}   
}   
//查看其他用户   
//普通用户   
$stmt = "UPDATE ".DB_NAME.".USER SET IsOnline='N' WHERE ".time()." -   
unix_timestamp(RequestTime) > ".ONLINE_DURATION." AND UserGroupID != ".GUEST;   
$result = query($stmt,$conn);   
//游客   
$stmt = "DELETE FROM ".DB_NAME.".TEMPUSER WHERE ".time()." -   
unix_timestamp(RequestTime) > ".ONLINE_DURATION;   
$result = query($stmt,$conn);   
disconnect($conn);   
}   
//得到在线人数,分用户和游客   
function getOnlineNumber()   
{   
$olnum = array();   
$conn = connect();   
$stmt = "SELECT COUNT(UserID) FROM ".DB_NAME.".USER WHERE IsOnline='Y' AND   
UserGroupID != 4"; //4 为guest的用户组id   
//info ($stmt);   
$result = query($stmt,$conn);   
$olnum['user'] = result($result,0,"COUNT(UserID)");   
$stmt = "SELECT COUNT(TempID) FROM ".DB_NAME.".TEMPUSER";   
//info ($stmt);   
$result = query($stmt,$conn);   
if ($row = fetch_array($result))   
{   
$olnum['guest'] = $row['COUNT(TempID)'];   
}   
disconnect($conn);   
return $olnum;   
}   

其中的connect(), disconnect(), query(),fetch_array()函数在dbmanager.inc.php中   
dbmanager.inc.php   
define("DB_NAME","databasename");   
define("DB_USER","user");   
define("DB_PASS","pass");   
define("DB_HOST","localhost");   
function connect()   
{   
//echo "Connecting to Host:".HOST."<br>";   
$conn = mysql_connect(DB_HOST,DB_USER,DB_PASS);   
mysql_select_db(DB_NAME);   
/*   
if ($conn)   
{   
echo "Connect to database sucessfully. connection id:".$conn."<br>";   
}   
else   
{   
echo "Connect to database failed.<br>";   
}   
*/   
return $conn;   
}   
function pconnect()   
{   
return mysql_pconnect(DB_HOST,DB_USER,DB_PASS);   
}   
function disconnect($conn)   
{   
$close = mysql_close($conn);   
/*   
if ($close)   
echo "MySQL Database disconnected.<br>";   
else   
echo "MySQL Database disconnecting failed. Please try again.<br>";   
*/   
}   
function query($stmt,$conn)   
{   
return mysql_query($stmt,$conn);   
}   
function fetch_array($result)   
{   
return mysql_fetch_array($result);   
}   
function fetch_row($result)   
{   
return mysql_fetch_row($result);   
}   
function num_rows($result)   
{   
return mysql_num_rows($result);   
}   
function result($result,$row,$field)   
{   
return mysql_result($result,$row,$field);   
}   

rule层:   
rl_online.php   
function getOnline()   
{   
if ($userid == 2)   
{   
if (session_is_registered("tempuserid"))   
{   
checkOnline($userid,$tempuserid);   
}   
}   
else   
{   
checkOnline($userid);   
}   
return getOnlineNumber();   
}   
ui层:   
ui_online.php   
$online_num = getOnline();   
echo "在线人数,注册用户".$online_num['user']."人,游客".$online_num['guest']."人";   
  
  

哈哈哈!!!!你的IP是不是?我都知道了!!!
返回列表