โปรแกรม Count user online เป็นโปรแกรมที่ใช้นับ คนที่เข้าใช้เว็บไซท์อยู่ในขณะเวลานั้นๆ โดยสามารถระบุหน้าที่ต้องการหาผู้ที่ใช้หน้าเดียวกันนั้นอยู่ได้ โดยความต้องการของโปรแกรม ก็แน่นอนครับ PHP + MySql โดยท่านสามารถ ดาวน์โหลดซอร์สโค๊ดได้ที่นี่
ก่อนอื่นเรามาดูโครงสร้างของโปรแกรมก่อนครับ ในโปรแกรมนี้เราจะใช้ตัวแปรสำคัญตัวคือ Session เพื่อใช้ยืนยัน user นั้นๆ โครงสร้างของ table คือ
| ชื่อ coloumn | ชนิด | หมายเหตุ |
| stime | int (15) | เวลาที่เริ่มใช้ session |
| ctime | int(15) | เวลาขณะที่ใช้ในขณะนั้น |
| session_id | varchar(50) | session id ของแต่ละ user |
มาเริ่มกันเลยครับ ส่วนแรกคือการตั้งค่าต่างๆของโปรแกรม
// MySql host address
$config["host"] = "localhost";
// MySql login id
$config["uid"] = "";
// MySql login password
$config["pass"] = "";
// MySql database
$config["db"] = "";
// Timeout (seconds)
$config["to_second"] = 300;
ส่วนที่สอง เป็นฟังก์ชั่น ในการเก็บข้อมูลของ user ลงใน MySql โดยมีการเช็กว่า session_id นั้นๆ มีอยู่แล้วหรือไม่ ถ้ามีอยู่แล้วจะเป็นการเพิ่มค่าของเวลาแทน ถ้ายังไม่มี session_id นั้นๆ จะถูกเพิ่มลงใน MySql
function write_session()
{
global $config;
$tstamp = time();
$f = "";
if(isset($HTTP_SERVER_VARS['PHP_SELF'])){
$f = $HTTP_SERVER_VARS['PHP_SELF'];
}else{
$f = $_SERVER['PHP_SELF'];
}
$link = @mysql_connect($config["host"], $config["uid"], $config["pass"]);
@mysql_select_db($config["db"], $link);
$res = @mysql_query("SELECT session_id FROM sheroku_useronline WHERE session_id='".session_id()."'",$link);
if(!$res){
$res = @mysql_query("INSERT INTO sheroku_useronline(stime, ctime, file, session_id) VALUES(".$tstamp.",".$tstamp.",'".$f."','".session_id()."')",$link);
}else{
$row = @mysql_fetch_array($res, MYSQL_ASSOC);
$res = @mysql_query("UPDATE sheroku_useronline SET ctime=".$tstamp.", file='".$f."' WHERE session_id='".session_id()."' LIMIT 1",$link);
}
@mysql_close($link);
return $res;
}
ฟังก์ชั่นนนี้เป็นการหาจำนวนของ user ที่มีการใช้หน้าเว็บเพจนั้นๆอยู่ (ถ้าต้องการหาจำนวน user ทั้งหมด ก็เพียงแต่ตัด expression "file='".$f."'" ออกเท่านั้นครับ
function count_useronline()
{
global $config;
$f = "";
if(isset($HTTP_SERVER_VARS['PHP_SELF'])){
$f = $HTTP_SERVER_VARS['PHP_SELF'];
}else{
$f = $_SERVER['PHP_SELF'];
}
$ctime= time();
$timeout = $ctime - $config["to_second"];
$link = @mysql_connect($config["host"], $config["uid"], $config["pass"]);
@mysql_select_db($config["db"], $link);
$res = @mysql_query("SELECT COUNT(session_id) AS num FROM sheroku_useronline WHERE file='".$f."' AND ctime>".$timeout,$link);
$num = @mysql_fetch_array($res, MYSQL_ASSOC);
$res = @mysql_query("DELETE FROM sheroku_useronline WHERE ctime<".$timeout,$link);
@mysql_free_result($res);
@mysql_close($link);
return $num["num"];
}
จะเห็นว่าไม่ใช่เรื่องยากเลยใช่ไหมครับ ที่จะทำระบบนับ user ไปไว้ในเว็บไซท์ของท่าน
Sat 26 Jan 2008 21:24:13
ดาวน์โหลดซอร์ทโค้ดไม่ได้ครับ
Sun 27 Jan 2008 12:27:07
Wed 23 Apr 2008 12:08:21

















