พบกับบทความเกี่ยวกับคอมพิวเตอร์และ programming ได้ที่ http://articles.modoeye.com
PHP Articles / โปรแกรมนับ user online
Administrator
Sat 28 May 2005 22:50:31

โปรแกรม 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 ไปไว้ในเว็บไซท์ของท่าน

twin
twin
Sat 26 Jan 2008 21:24:13

ดาวน์โหลดซอร์ทโค้ดไม่ได้ครับ

webmaster
webmaster
Sun 27 Jan 2008 12:27:07
ขออภัยด้วยครับไฟล์จำไม่ได้ว่าเอาไว้ไหนแล้ว เนื่องจากทำระบบใหม่ทั้งหมดครับ แต่ code ทั้งหมดก็อยู่ในกระทู้อยู่แล้วครับ
1234
1234
Wed 23 Apr 2008 12:08:21
ขอบคุณครับ
Reply
Name:
E-mail:
Home | Services | Forum | Classified | Directories | Support | Contact
ATOM feed RSS 0.9 feed RSS 1.0 feed RSS 2.0 feed
Copyright © 2005 - 2007 Modoeye.com, All Rights Reserved.
Disclaimer | Privacy policy | Term of Use | Term of Services
Valid XHTML Valid CSS! PHP: Hypertext Preprocessor MySQL database Apache Powered! FreeBSD Power to serve
Modoeye Sitemap Client login