<?php
/******
Online User Counter. 1.0b
โปรแกรมนี้ถูกพัฒนาโดย Sansak C. (sansak@engineer.com)
โปรแกรมตัวนี้เป็นเพียงแค่รุ่นทดสอบ จึงไม่รับรองผล 100 % ว่าจะทำงานได้ดีตามที่คาดหวัง
ถ้าท่านนำไปพัฒนาและแก้ไขให้ดีขึ้น กรุณาแจ้งกลับมาถึงผมด้วยครับ เพราะผมจะได้นำไปเรียนรู้
พัฒนาและปรับปรุงให้ดียิ่งๆ ขึ้นไป
วิธีการเรียกใช้
ให้ include ไฟล์ useronline.php ไว้ในหน้าที่ต้องการให้นับการ online เช่น
ต้องการให้นับหน้า index.php (ต้องเป็นไฟล์ .php) ให้ include ด้วยคำสั่ง
include("./useronline/useronline.php"); ไว้บันทัดแรกสุดของไฟล์ index.php
วิธีการแสดง ให้ใช้คำสั่ง echo $users_online; เพื่อแสดงจำนวนผู้ online ขณะนั้นๆ
วิธีสร้าง database
ให้สร้างดังนี้
create table YOURTABLE (
SID varchar(100) NOT NULL,
time varchar(15) NOT NULL,
day varchar (3) NOT NULL);
Config your settings below
*****/
$Session_name = "default"; // The Sessions name, write "default" for default name.
$host = "localhost"; // Your host
$username = ""; // Your MySQL username
$password = ""; // Your MySQL password
$database = ""; // Your Database of choice
$table = "useronline"; // Your Table of choice, ex. "online_users"
/***
Don't mess with the code below if you don't know what you're doing!
**/
// Starts Session
if ($Session_name == "default") {
session_start();
}
else {
session_name("$Session_name");
session_start("$Session_name");
}
$SID = session_id();
$time = time();
$dag = date("z");
$nu = time()-900; // Keep for 15 mins
//This connects to the MySQL server
mysql_connect ($host, $username, $password) OR DIE ("Could not connect to MySQL");
mysql_select_db($database) OR DIE ("Can't select database.");
// Check to see if the session_id is already registerd
$sidcheck = mysql_query("SELECT count(*) FROM $table WHERE SID='$SID'");
$sid_check = mysql_result($sidcheck,0);
if ($sid_check == "0") {
// If not, the session_id will be stored in MySQL
mysql_query("INSERT INTO $table VALUES ('$SID','$time','$dag'");
} else {
// If it is, it will register a new time to the session.
mysql_query("UPDATE $table SET time='$time' WHERE SID='$SID'");
}
// This is it, this counts the users currently online
$count_users = mysql_query("SELECT count(*) FROM $table WHERE time>$nu AND day=$dag");
$users_online = mysql_result($count_users,0);
// This deletes old ids, so your db will not get overloaded.
mysql_query("DELETE FROM $table WHERE time<$nu");
mysql_query("DELETE FROM $table WHERE day != $dag");
mysql_close();
?>