Long Live The King
ข้าพเจ้าไม่ได้มีพรสวรรค์พิเศษอะไร ข้าพเจ้าเพียงแต่มีความกระหายใคร่รู้อยู่เสมอ ทุ่มเทให้กับสิ่งที่อยากรู้ พากเพียรอย่างทรหด และสำรวจวิจารณ์ความรู้ของตัวเองเป็นประจำ ปัจจัยเหล่านี้คือที่มาของแนวคิดต่างๆ ของข้าพเจ้า .... อัลเบิร์ต ไอน์สไตน์

วันอังคารที่ 1 มกราคม พ.ศ. 2556

วิธีการทำ User Online เช็คจำนวนผู้ออนไลน์ทุก 15 นาที PHP,SQL



ในที่สุดเราก็จะได้รู้กันเสียทีว่ามีผู้ที่ใช้งานเว็บไซต์ตอนนี้มีกี่คน คนในที่นี้หมายถึง session_id วิธีการก็คือ เราจะเก็บ session_id และ time() ทุกๆหน้าของเว็บเพจที่เราต้องการ เพื่อบันทึกลงฐานข้อมูล จากนั้นเราก็จะนำเอา time() มาเช็คกับเวลาที่เรากำหนดไว้ คือ 15 นาที.....

เริ่มด้วย session_start() ก่อนเพราะเราต้องเก็บตัวแปร session_id 
session_start();
include 'config.php';

จากนั้นก็เก็บตัวแปรที่ต้องการก่อนคือ  
$useronline = session_id();
$time = time();
$timecheck = time() - 900;//เอาไว้เช็คเวลา กำหนดไว้ 15 นาที

ต่อมาก็นับแถวในฐานข้อมูลว่ามี session_id ของผู้ที่เพิ่งจะเข้ามาหรือไม่
$sql = "select * from useronline where session = '$useronline'";
$result = mysql_query($sql);
$num = mysql_num_rows($result);

ถ้ามีอยู่แล้วก็ให้ update time()  
if($num > 0){
mysql_query("update useronline set time_online = '$time'
where session = '$useronline'");
}

ถ้ายังไม่มีก็ insert เข้าไป  
else{
mysql_query("insert into useronline (session,time_online) values
('$useronline','$time')");
}

จากนั้นก็นำเวลาที่ update ของ user มาเช็คกับเวลาที่กำหนด คือ 15 นาที  
$sql = "select * from useronline where time_online > '$timecheck'";
$result = mysql_query($sql);
$useronline = mysql_num_rows($result);

Code ที่กล่าวมาทั้หมดนั้น ท่านสามารถนำไป include ตามเพจต่างๆตามที่ต้องการได้เพื่อ
ติดตาม update เวลาของ user เวลาที user คลิกไปตามลิงค์ต่างๆ
มาในส่วนขอการแสดงผลของการนับจำนวนของ useronline เพียงแค่ echo ออกมาแค่นั้นเอง...

<div id="user">
<div id="useronline">ผู้ใช้งานขณะนี้ <font color='blue'>
<b><?=$useronline?></b></font> ท่าน</div>
<center><div id="update">update 15 นาที</div></center>
</div>

Code ที่เสร็จแล้ว  
<?php session_start(); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
<style>
#useronline{background:#FFF3AE;border:2px solid #1BAFD5;padding:5px;}
#user{width:160px;padding:8px 8px 3px 8px; border:1px solid #999999;
background:#eeeeee;}
#update{font-size:9px;color:#999999;}
</style>
</head>

<body>
<?php
include 'config.php';
$useronline = session_id();
$time = time();
$timecheck = time() - 900;

$sql = "select * from useronline where session = '$useronline'";
$result = mysql_query($sql);
$num = mysql_num_rows($result);

if($num > 0){
mysql_query("update useronline set time_online = '$time'
where session = '$useronline'");
}
else{
mysql_query("insert into useronline (session,time_online) values
('$useronline','$time')");
}

$sql = "select * from useronline where time_online > '$timecheck'";
$result = mysql_query($sql);
$useronline = mysql_num_rows($result);
?>

<div id="user">
<div id="useronline">ผู้ใช้งานขณะนี้ <font color='blue'>
<b><?=$useronline?></b></font> ท่าน
</div>
<center><div id="update">update 15 นาที</div></center>
</div>

</body>
</html>


0 ความคิดเห็น:

แสดงความคิดเห็น

© Bookneo, AllRightsReserved.

ขับเคลื่อนโดย Blogger Designed by Nikhorn Thongchuay