Counter web merupakan komponen yang cukup menarik untuk mengetahui seberapa banyak pengunjung website kita. Memang kita bisa menggunakan berbagai tool analitik seperti Google Analytic untuk mendapatkan hasil yang lebih detail. Ataupun menggunakan tool hit counter yang banyak bisa dicari Google. Namun kita bisa membuatnya dengan menggunakan script PHP.
Dalam tutorial ini hit counter yang dibuat sangat sederhana, tanpa memperhatikan lokasi visitor. Untuk menyimpan data akan menggunakan file .txt artinya tanpa menggunakan database. Serta menggunakan cookie untuk menghindari penambahan jumlah pengunjung dari perangkat yang sama.
Buat file hitcounter.php untuk class HitCounter
<?php class HitCounter { private $expire; //menentukan umur cookie private $file = 'visitor.txt'; public function __construct() { if (!file_exists($this->file)) { //kondisi jika file visitor.txt belum ada, buat baru dengan nilai 0 $handle = fopen($this->file, 'w'); $data = 0; fwrite($handle, $data); } $this->expire = 30 * 86400; //umur cookie 30 hari } public function Hitung() { if (!isset($_COOKIE['counter'])) { //cookie kosong dan tambahkan jumlah pengunjung $handle = fopen($this->file, 'r'); $data = intval(fread($handle, filesize($this->file))); //mengambil nilai dari visitor.txt $nilaibaru = $data + 1; //tambahkan nilai +1 //simpan nilai baru $handle = fopen($this->file, 'w'); fwrite($handle, $nilaibaru); setcookie('counter', time(), time() + $this->expire); //tambahkan cookie dengan nilai tanggal sekarang } } public function tampil() { //mengambil nilai dari visitor.txt $handle = fopen($this->file, 'r'); $data = intval(fread($handle, filesize($this->file))); return $data; } public function waktu() { $history = null; //menampilkan kapan user berkunjung if (!empty($_COOKIE['counter'])) { $get = $_COOKIE['counter']; $history = date("d F Y", $get); } return $history; } }
Kemudian kita bisa menggunakan class HitCounter dimanapun, misal di file index.php
<?php require 'hitcounter.php'; $hit = new HitCounter(); echo '<h1>Hello world</h1>'; //cek dan simpan $hit->Hitung(); //tampilkan counter echo 'jumlah pengunjung :' . $hit->tampil(); //tampilkan history jika ada $h = $hit->waktu(); if (!empty($h)) { echo '<br>Anda telah mengunjungi halaman ini pada : ' . $h; }
Ketika membuka halaman index.php pertama kali, maka nilai jumlah visitor akan bertambah 1. Kalau halaman di refresh, jumlah visitor akan tetap dan muncul tanggal kapan Anda membuka halaman tersebut. Cookie seperti di script memiliki masa expire 30 hari, jadi setelah 30 hari jika Anda membuka halaman itu lagi maka jumlah pengunjung akan bertambah 1 lagi. Karena Anda dihitung sebagai visitor baru.
Untuk melihat tutorial PHP lainnya, silakan klik di sini.
Semoga bermanfaat 🙂
pada bagian
if (!file_exists($this->file)) {
//kondisi jika file visitor.txt belum ada, buat baru dengan nilai 0
$handle = fopen($this->file, ‘w’);
nah bagian ‘w’ itu maksudnya apa ? sudah melihat web yang lain dan compare juga tapi masih pake ‘w’ untuk apa itu ?
“w” itu argumen untuk menulis file
Thankz sharing ilmunya
argumen gimana ya mas?
fopen(filename, mode)
bro saya mengunjungi halaman saya 5X kok 1 pengunjung terus harusnya 5 pengunjung
Soalnya masih pengunjung yang sama belum 30hr coba hapus cookie di browsernya atau buka pakai browser lain pasti nambah satu
terima kasih 🙂
Thankz sharing ilmunya
Terima kasih
bro saya mengunjungi halaman saya 5X kok 1 pengunjung terus harusnya 5 pengunjung
Apakah file visitor.txt sudah rewriteable? Apakah cookie sudah berhasil dibuat?
Hello world
Warning: Cannot modify header information – headers already sent by (output started at C:\xampp\htdocs\rekomphp\main.php:79) in C:\xampp\htdocs\rekomphp\hitcounter.php on line 27
jumlah pengunjung :3
bro kok error
sepertinya file yang bermasalah itu
coba ganti semua header(‘location: TEMPAT REDIRECT’) dengan echo ‘window.location=”TEMPAT REDIRECT”;’;
Hitung();
?>
script ini ditaruh diatas script
Mau Tanya skrip page counter menggunakan session dibawah ini mungkin saya bisa dibantu, kenapa saat tampil dibrowser google chrome dan Mozilla nilai hit counter nya beda-beda atau tidak sama. Serta bagaimana caranya dengan menggunakan session nilai counter nya tetap exist tidak balik lagi awal ke 1. Thank you
apakah file untuk menyimpan total visitornya sama? Ketika menambahkan visitor, nilai dari file txt diambil terlebih dahulu kemudian ditambahkan 1 dan disimpan lagi hasil akhirnya di file txt tersebut. Coba pastikan ketika ada visitor baru, nomor di file juga bertambah