<?php
/*

使用 PHP + MySQL 製作一個線上人數計數器。
====================================================
歡迎轉載，但轉載時請保留此宣告，不得作為商業用途
作者: Sam Tang <admin{at}phpini{dot}com>
來源網站: http://www.phpdc.com/



建立資料庫
第一步需要先建立一個 MySQL 資料表，可以在文字模式或 phpmyadmin 下執行以下 SQL 語句：

CREATE TABLE `online_counter` (
`hash` varchar( 50 ) NOT NULL ,
`remote_addr` varchar( 20 ) NOT NULL ,
`time` int( 10 ) NOT NULL) 



PHP 程式碼，當建立以上資料表後，便可以編寫 PHP 程式了，以下例子假設你的 MySQL 登入資料如下：

Host: localhost
username: dbuser
password: dbpasswd
database: dbname

請注意，在使用以下程式碼時，請根據你的實際需要修改 MySQL 登入資料：
在此例子，$online_counter['total'] 就是在過去 10 分鐘內在網站有活動的人數。


*/
?>
<?php
// create mysql connection
$db_conn = mysql_connect("localhost", "dbuser", "dbpasswd");
mysql_select_db("dbname", $db_conn);

// check and make hash string
if(!isset($_SESSION["hash"])){
    $hash = md5(time());
    session_register("hash");
    $_SESSION["hash"] = $hash;
}

// update database
$time = time();
$query = mysql_query("select hash from `online_counter` where hash='".$_SESSION["hash"]."'");
if($rows = mysql_fetch_row($query)){
    mysql_query("update `online_counter` set `time`='".$time."' where hash='".$_SESSION["hash"]."'");
}else{
    mysql_query("insert into `online_counter` values('".$_SESSION["hash"]."', '".$_SERVER["REMOTE_ADDR"]."', '".$time."')");
}

// get online users
$counter_time = $time - 600; // 10 mins
$online_query = mysql_query("select count(*) as total from `online_counter` where `time` > '".$counter_time."'");
$online_counter = mysql_fetch_array($online_query);

// delete old record
mysql_query("delete from `online_counter` where `time` < '".$counter_time."'");

mysql_close($db_conn);
?>

線上人數：<?echo $online_counter['total']?>
