|
|
|
ทำUserOnline ! (Php & Mysql) มาทำ Script สำหรับเช็คคนที่กำลังออนไลน์ (Useronline) กันดีกว่า ซึ่งวิธีการนั้นทำได้ |
|
|
|
|
|
|
|
มาทำ Script สำหรับเช็คคนที่กำลังออนไลน์ (Useronline) กันดีกว่า ซึ่งวิธีการนั้นทำได้ไม่ยากเลย และหลักการทำงานก็ไม่มีอะไรซับซ้อนมากมาย เราสามารถดัดแปลงไปใช้งานได้อีกหลายกรณี เช่น เช็คจำนวนคนที่กำลังดูหน้าเวบไซต์ของเรา หรือเอาไปใส่ใน Script โปรแกรมสนทนา(Chat) ก็ได้ ซึ่งอยู่กับการประยุกต์ใช้งานของแต่ล่ะคน ที่จะมีเทคนิคนำไปแก้ไขดัดแปลงอย่างไร
=============================================
ก่อนอื่นเลย เราต้องมาทำความเข้าใจกับหลักการทำงานของโปรแกรมนี้กันก่อน
การเช็คจำนวนคนออนไลน์ แบบทางหน้าเวบเพจนั้น ไม่ได้แสดงคนที่ออนไลน์แบบเรียลไทม์จริงๆ
แต่เป็นการนับจำนวนคนที่อ่านหน้าเอกสารของเวบเราอยู่ขณะนั้น โดยมีการเปิดอ่าน หรือรีเฟรชหน้าเวบเพจเรื่อยๆ ภายในเวลาที่เรากำหนด
ตัวอย่างเช่น ตั้งเวลาไว้ที่ 5 นาที หมายถึงว่า หากคนเยี่ยมชมเวบเพจ ไม่มีการรีเฟรช หรือเรียกเปิดหน้าเวบไซต์เลยในระยะเวลา 5 นาที
คนนั้นจะถูกลบออกไป จากการเป็นคนเยี่ยมชมทันที
และเมื่อมีการเรียกใหม่อีกครั้ง ก็จะเพิ่มเข้ามาใหม่อีก
แต่หากมีการเปิดเวบเพจแต่ล่ะหน้าไม่เกิน 5 นาที ก็จะนับเป็นแค่ 1 คน
===================================
ทั้ งนี้ โดยถือจากหมายเลข IP ที่ต่อเข้ามาเป็นหลัก
(สามารถนำไปดัดแปลงเป็นอย่างอื่นได้ เช่น วัดจากค่า Session หรือ Username ที่ login เข้ามาเป็นต้น)
วิธีการนับคนเยี่ยมชมออนไลน์ ก็ไม่ยากเริ่มจาก
1. เมื่อมีการโหลดเวบเพจขึ้นมา จะกำหนดให้เก็บค่า IP ของคนเยี่ยมชม และเวลาที่โหลดหน้าเวบเพจ ลงในฐานข้อมูลทันที
2. หลังจากนั้นเช็คว่า คนเยี่ยมชมหมายเลข IP ใด เกินกำหนดเวลาที่ตั้งไว้แล้ว ให้ลบออกฐานข้อมูล
3. ให้นับจำนวนเรคคอร์ดในตารางทั้งหมด ที่มี IP ต่างกัน ว่ามีเท่าไหร่ โดย IP เดียวกันให้นับเป็นคนเดียว
4. ค่าที่ได้ ก็คือจำนวนคนออนไลน์นั่นเอง
แค่นี้เองครับ หลักการง่ายๆ ไม่ยากอย่างที่คิดนะครับ
ส่วนใครจะเอาไปประยุกต์ยังงัย ก็ตามสบายครับ....
=============================================
การใช้งานครั้งแรกให้พิมพ์ useronline.php?action=Install
เสร็จแล้วถ้าขึ้นข้อความ "Useronline is install completed! "
แสดงว่าได้สร้างตารางเก็บข้อมูลแล้ว
ถ้าต้องการใช้ก็พิมพ์แค่ useronline.php ปกติเท่านั้น
=============================================
>> DEMO <<
=============================================
Code (PHP)
<?
######################################################
# Configuration
######################################################
$server = "localhost"; // Your mySQL Server, most cases "localhost"
$db_user = "user"; // Your mySQL Username
$db_pass = "password"; // Your mySQL Password
$database = "db_name"; // Database Name
$timeoutseconds = 300; //ตั้งเวลาสำหรับเช็คคนออนไลน์ เป็นวินาที 300= 5 นาที
# End Configuration - DO NOT EDIT BEHIND THIS LINE !!!
###############################################
if($action=="Install"){
mysql_connect($server, $db_user, $db_pass) or die ("Useronline Database CONNECT Error");
mysql_db_query($database, "CREATE TABLE useronline ( timestamp int(15) NOT NULL default '0', ip varchar(40) NOT NULL default '', file varchar(100) NOT NULL default '', PRIMARY KEY (timestamp), KEY ip (ip), KEY file (file)) TYPE=MyISAM") or die("Useronline Database Install Error");
echo "Useronline is install completed! ";
} else {
$timestamp=time();
$timeout=$timestamp-$timeoutseconds;
mysql_connect($server, $db_user, $db_pass) or die ("Useronline Database CONNECT Error");
// เมื่อมีการโหลดเวบเพจขึ้นมา จะกำหนดให้เก็บค่า IP ของคนเยี่ยมชม และเวลาที่โหลดหน้าเวบเพจ ลงในฐานข้อมูลทันที
mysql_db_query($database, "INSERT INTO useronline VALUES ('$timestamp','$REMOTE_ADDR','$PHP_SELF')") or die("Useronline Database INSERT Error");
//หลังจากนั้นเช็คว่า คนเยี่ยมชมหมายเลข IP ใด เกินกำหนดเวลาที่ตั้งไว้แล้ว ให้ลบออกฐานข้อมูล
mysql_db_query($database, "DELETE FROM useronline WHERE timestamp<$timeout") or die("Useronline Database DELETE Error");
//ให้นับจำนวนเรคคอร์ดในตารางทั้งหมด ที่มี IP ต่างกัน ว่ามีเท่าไหร่ โดย IP เดียวกันให้นับเป็นคนเดียว
$result=mysql_db_query($database, "SELECT DISTINCT ip FROM useronline WHERE file='$PHP_SELF'") or die("Useronline Database SELECT Error");
//ค่าที่ได้ ก็คือจำนวนคนออนไลน์นั่นเอง
$user =mysql_num_rows($result);
mysql_close();
//Show Useronline
if ($user==1) {
echo"$user User online";
} else {
echo"$user Users online";
}
}
?>
Tag : - - - -
|
|
|
|
|
|
Date :
2009-05-13 01:26:10 |
By :
aamacmac |
View :
32953 |
Reply :
12 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+1
|
|
|
|
|
Date :
2009-05-13 03:14:32 |
By :
plakrim |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Date :
2009-05-13 08:36:26 |
By :
spybnc |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เมพ!!!
|
|
|
|
|
Date :
2010-05-13 14:27:28 |
By :
PalmZaaa |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เมพ ขิง ขิง!!! +1
|
|
|
|
|
Date :
2010-05-13 15:48:45 |
By :
kenessar |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
น่าสนใจนะดีครับ +1
|
|
|
|
|
Date :
2010-06-28 07:48:00 |
By :
Dragon_Type |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เจ๋งครับ +1
|
|
|
|
|
Date :
2010-06-28 09:06:59 |
By :
Dragons_first |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถาม หน่อย ครับ ถ้า ผม กดปิดหน้าต่างเลย
ชื่อคนออนไลน์ที่ปิดหน้าต่างยังคงค้างอยู่ ครับ
มีวิธีแก้ไม ครับ
ขอบคุณครับ
|
|
|
|
|
Date :
2011-02-25 20:36:24 |
By :
hero_big |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แล้วถ้าเราจะนับเวลาล่ะครับ คืออยากนับเวลา user ที่อยู่ในระบบ ว่า online ไปกี่วัน กี่ชั่วโมง ประมาณนี้ครับเหมือนตามเว็บบอร์ดน่ะครับ งมหามาหลายวันแล้วครับ หาไม่เจอซักทีครับ
ขอขอบคุณล่วงหน้านะครับผม
|
|
|
|
|
Date :
2011-06-16 19:21:21 |
By :
demonking |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อย่่างนี้นี่เองครับ
|
|
|
|
|
Date :
2011-11-01 15:09:37 |
By :
dinsorsee |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณครับ
|
|
|
|
|
Date :
2011-11-02 03:43:43 |
By :
lcherrybluel |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|