kikapo
เลิศพันธุ์ เพียรสร้างสรร

การเขียน php นับจำนวนผู้เข้าชมเพจแบบง่ายๆ (Make a simple visitor counter using PHP)


สร้างตัวนับจำนวนผู้เข้าชมเว็บ

คราวนี้ขอเขียนบันทึกในแนวเขียนเว็ปบ้าง หลายๆ คนเขียนเว็บเสร็จก็อยากจะออนไลน์ เมื่อจะออนไลน์ก็อยากจะรู้ว่ามีคนเข้ามาเยี่ยมเว็บงามๆ ของเรากี่คน ? วันนี้จึงอยากนำเสนอการนับจำนวนแบบง่ายๆ ให้นำไปใช้กันดู โดยผลงานที่จะได้ก็ประมาณดังรูปที่ 1 ครับ

รูปที่ 1 ผลงานที่จะได้

ขั้นตอนทำง่ายๆ ดังนี

1. สร้างภาพตัวเลขตั้งแต่ 0-9 เอาไว้ จะเอาขนาดเท่าใดก็ตามใจ แต่ที่ผมทำไว้ที่ 20x20 ตั้งชื่อเป็น 0.png, 1.png, ....... 9.png ในแต่ละเลขดังนี้ 

2. สร้างพื้นขนาดที่ใหญ่กว่า เพื่อที่เราจะได้เอาตัวเลขมาวางบนพื้นนี้ ที่ผมทำไว้ก็ 140x21 ให้ชื่อว่า canvas.png

3. เขียนภาษา php เพื่อนำภาพไปใช้ โดยมีหลักการคือ เราจะเปิด session ก่อน แล้วอ่านไฟล์ชื่อ counter.txt ถ้าไม่มีไฟล์นี้ก็ให้สร้างขึ้นมาแล้วใส่เลข 0 ทิ้งไว้ จากนั้นสร้าง session ชื่อ hasVisited เพื่อบอกว่าได้มีการเปิดเพจมาแล้ว เขียนตัวเลขใหม่เรียงต่อจากเลขเดิมในไฟล์ counter โดยแยกเป็น 5 ตำแหน่ง ในการแสดงก็ใช้ภาพนำเสนอแทนการแสดงด้วยตัวเลขแบบเดิมๆ  โค๊ตเต็มๆ เป็นดังด้านล่าง ผมตั้งชื่อว่า count.php ข้อดีของการใช้ session ก็ตรงที่จะไม่นับไปทั่วทีปทั่วแดน คือ จะนับครั้งเดียว จนกว่า session จะถูกทำลาย เช่นด้วยการล้างข้อมูลการเยี่ยมชมเว็ป หรือการทำลาย session ด้วยคำสั่ง destroy

<?php

session_start();

$counter_name = "counter.txt";

 

if (!file_exists($counter_name)) {

  $f = fopen($counter_name, "w");

  fwrite($f,"0");

  fclose($f);

}

 

$f = fopen($counter_name,"r");

$counterVal = fread($f, filesize($counter_name));

fclose($f);

 

if(!isset($_SESSION['hasVisited'])){

  $_SESSION['hasVisited']="yes";

  $counterVal++;

  $f = fopen($counter_name, "w");

  fwrite($f, $counterVal);

  fclose($f);

}

 

$counterVal = str_pad($counterVal, 5, "0", STR_PAD_LEFT);

$chars = preg_split('//', $counterVal);

  

$im = imagecreatefrompng("canvas.png");

$src1 = imagecreatefrompng("$chars[1].png");

$src2 = imagecreatefrompng("$chars[2].png");

$src3 = imagecreatefrompng("$chars[3].png");

$src4 = imagecreatefrompng("$chars[4].png");

$src5 = imagecreatefrompng("$chars[5].png");

 

imagecopymerge($im, $src1, 3, 0, 0, 0, 20, 20, 90);

imagecopymerge($im, $src2, 32, 0, 0, 0, 20, 20, 90);

imagecopymerge($im, $src3, 60, 0, 0, 0, 20, 20, 90);

imagecopymerge($im, $src4, 88, 0, 0, 0, 20, 20, 90);

imagecopymerge($im, $src5, 117, 0, 0, 0, 20, 20, 90);

 

// Output and free from memory

header('Content-Type: image/png');

echo imagepng($im);

imagedestroy($im);

 ?>

4. การนำไปใช้ก็เพียงแค่เรียก

<div >Number of  visitors :</div>

<img src="count.php" />

5. อย่าลืม cdmod กำหนดไฟล์ count.txt เป็น 777 ด้วยนะครับ ในตอนลง host จะได้เขียนใหม่ได้เรื่อยๆ   หรือจะดัดแปลงลงในเดต้าเบสก็แล้วแต่สะดวกครับผม

 

 ปล. ครั้งนี้ไม่มีไฟล์ให้นะครับ เพราะมันน่าจะง่ายๆ เหมือนชื่อหัวข้อ

 

คำสำคัญ (Tags): #php#counter
หมายเลขบันทึก: 548842เขียนเมื่อ 21 กันยายน 2013 01:19 น. ()แก้ไขเมื่อ 21 กันยายน 2013 01:30 น. ()สัญญาอนุญาต: ครีเอทีฟคอมมอนส์แบบ แสดงที่มา-ไม่ใช้เพื่อการค้า-ไม่ดัดแปลงจำนวนที่อ่านจำนวนที่อ่าน:


ความเห็น (0)

ไม่มีความเห็น

พบปัญหาการใช้งานกรุณาแจ้ง LINE ID @gotoknow
ClassStart
ระบบจัดการการเรียนการสอนผ่านอินเทอร์เน็ต
ทั้งเว็บทั้งแอปใช้งานฟรี
ClassStart Books
โครงการหนังสือจากคลาสสตาร์ท