คราวนี้ขอเขียนบันทึกในแนวเขียนเว็ปบ้าง หลายๆ คนเขียนเว็บเสร็จก็อยากจะออนไลน์ เมื่อจะออนไลน์ก็อยากจะรู้ว่ามีคนเข้ามาเยี่ยมเว็บงามๆ ของเรากี่คน ? วันนี้จึงอยากนำเสนอการนับจำนวนแบบง่ายๆ ให้นำไปใช้กันดู โดยผลงานที่จะได้ก็ประมาณดังรูปที่ 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 จะได้เขียนใหม่ได้เรื่อยๆ หรือจะดัดแปลงลงในเดต้าเบสก็แล้วแต่สะดวกครับผม
ปล. ครั้งนี้ไม่มีไฟล์ให้นะครับ เพราะมันน่าจะง่ายๆ เหมือนชื่อหัวข้อ
ไม่มีความเห็น