2007年4月30日 星期一

PHP實現線上人數統計

首先先在資料庫中建立資料表
(MySQL 4.1 or later)
CREATE TABLE `counter` (
`hash` char(32) NOT NULL,
`ip` varchar(15) NOT NULL,
`time` int(11) NOT NULL,
PRIMARY KEY (`time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ps. IP欄位可有可無

線上人數的程式碼不包含製作圖片Function
(PHP 5.0 or later)
session_start();
$time = time();
//建立連線
$objConn = mysqli_connect("localhost", "帳號", "密碼",'資料庫',port) or die('資料庫無法連線');

// 檢查session是否有值
if(!isset($_SESSION["hash"]))
{
//使用ip加現在時間作 MD5 hash code
$hash = md5($_SERVER['REMOTE_ADDR'].$time);
session_register("hash");
$_SESSION["hash"] = $hash;
}
// 檢查資料庫中是否有hash code
$query = mysqli_query($objConn,"select hash from `counter` where (hash='".$_SESSION["hash"]."')");
if($rows = mysqli_fetch_row($query))
{
//有,更新最後在線時間
mysqli_query($objConn,"update `counter` set `time`='".$time."' where hash='".$_SESSION["hash"]."'");
}
else
{
//無,新增一筆 hash code
mysqli_query($objConn,"insert into `counter` values('".$_SESSION["hash"]."', '".$_SERVER["REMOTE_ADDR"]."', '".$time."')");
}
$intOnlineTime = $time - 300; //五分鍾內活動視為在線
$query = mysqli_query($objConn,"select count(time) from `counter`");
$objOnlineCount = mysqli_fetch_row($query);

// 清除逾時的資料
mysqli_query($objConn,"delete from `counter` where (`time` < '".$intOnlineTime."')");
//製作圖片,請參考前幾篇文章的資料,function內的參數需要修改圖片顯示才會正確
makeRandomImage('Online User : '.$objOnlineCount[0],100,20);
?>

簡單就完了線上人數的統計
只要將程式放至伺服器
在部落格中新增一欄自訂欄位後
將程式在網路上的位置填寫完即可

部落格中已將加入實際成品

【下列文章您可能也有興趣】

沒有留言: