
Ada beberapa pembaca ingin menanyakan bagaimana sih cara membuat Statistika Pengunjung? Statistika pengunjung berguna juga untuk mengetahui berapa banyak orang yang mengunjungi web kita dan kali ini, penulis ingin memberikan trik untuk proses pembuatan statistika pengunjung.
Kita memiliki database dbstatistika dengan tabel tstatistika dimana memiliki spesifikasi field sebagai berikut:
ip | varchar(20)
tanggal | date
hits | INT(11)
online | varchar(255)
tanggal | date
hits | INT(11)
online | varchar(255)
selanjutnya kita bikin sedikit skrip dengan nama statistik.php, yang skripnya sebagai berikut:
<?php
// skrip koneksi database
mysql_connect("localhost","root","");
mysql_select_db("dbstatistika");
$ip = $_SERVER['REMOTE_ADDR']; // Mendapatkan IP komputer user
$tanggal = date("Ymd"); // Mendapatkan tanggal sekarang
$waktu = time(); //
// Mencek berdasarkan IPnya, apakah user sudah pernah mengakses hari ini
$s = mysql_query("SELECT * FROM tstatistika WHERE ip='$ip' AND tanggal='$tanggal'");
// Kalau belum ada, simpan data user tersebut ke database
if(mysql_num_rows($s) == 0){
mysql_query("INSERT INTO tstatistika(ip, tanggal, hits, online) VALUES('$ip','$tanggal','1','$waktu')");
}
// Jika sudah ada, update
else{
mysql_query("UPDATE tstatistika SET hits=hits+1, online='$waktu' WHERE ip='$ip' AND tanggal='$tanggal'");
}
$pengunjung = mysql_num_rows(mysql_query("SELECT * FROM tstatistika WHERE tanggal='$tanggal' GROUP BY ip")); // Hitung jumlah pengunjung
$totalpengunjung = mysql_result(mysql_query("SELECT COUNT(hits) FROM tstatistika"), 0); // hitung total pengunjung
$bataswaktu = time() - 300;
$pengunjungonline = mysql_num_rows(mysql_query("SELECT * FROM tstatistika WHERE online > '$bataswaktu'")); // hitung pengunjung online
?>
Hari ini : <?php echo $pengunjung; ?>
Total : <?php echo $totalpengunjung; ?>
Pengunjung Online : <?php echo $pengunjungonline; ?>
// skrip koneksi database
mysql_connect("localhost","root","");
mysql_select_db("dbstatistika");
$ip = $_SERVER['REMOTE_ADDR']; // Mendapatkan IP komputer user
$tanggal = date("Ymd"); // Mendapatkan tanggal sekarang
$waktu = time(); //
// Mencek berdasarkan IPnya, apakah user sudah pernah mengakses hari ini
$s = mysql_query("SELECT * FROM tstatistika WHERE ip='$ip' AND tanggal='$tanggal'");
// Kalau belum ada, simpan data user tersebut ke database
if(mysql_num_rows($s) == 0){
mysql_query("INSERT INTO tstatistika(ip, tanggal, hits, online) VALUES('$ip','$tanggal','1','$waktu')");
}
// Jika sudah ada, update
else{
mysql_query("UPDATE tstatistika SET hits=hits+1, online='$waktu' WHERE ip='$ip' AND tanggal='$tanggal'");
}
$pengunjung = mysql_num_rows(mysql_query("SELECT * FROM tstatistika WHERE tanggal='$tanggal' GROUP BY ip")); // Hitung jumlah pengunjung
$totalpengunjung = mysql_result(mysql_query("SELECT COUNT(hits) FROM tstatistika"), 0); // hitung total pengunjung
$bataswaktu = time() - 300;
$pengunjungonline = mysql_num_rows(mysql_query("SELECT * FROM tstatistika WHERE online > '$bataswaktu'")); // hitung pengunjung online
?>
Hari ini : <?php echo $pengunjung; ?>
Total : <?php echo $totalpengunjung; ?>
Pengunjung Online : <?php echo $pengunjungonline; ?>
Terakhir, langsung jalankan saja via browser dengan mengetikan http://localhost/statistik.php, dan lihat hasilnya.. :)
Semoga skrip kali ini dapat memberikan manfaat kepada Anda.
syafrin
nich dia yng ku tunggu........hatur nuhun...mas.......mantap tutorialnya,,:-)
Agus Saputra
syafrin @ mantabs.. ^^
wahyu
ada gak yang lebih ringan di databasenya ya? soalnya aku pakai skrip dan database seperti ini di web sekitar 1 tahun, databasenya paling besar untuk nyimpan statistik ini. sewaktu backup database hampir 2MB padahal tanpa tabel statistik cma 300kb aja... mkasih...
Agus Saputra
wahyu @ bisa, tanpa menggunakan database.. tapi menggunakan Hits Counter.. jadi Anda siapkan file data.txt, kemudian tulis skrip berikut:
Skrip counter.php
<?php
//Baca File
$f="data.txt";
$h=fopen($f,"r ");
$c=fread($h,filesize($f));
fclose($h);
$isi=$c+1;
//TulisFile
$f=fopen("data.txt","w");
if($f){
fputs($f,$isi);
fclose($f);
}
else {echo"gagal";}
//BacaFile
$f="data.txt";
$h=fopen($f,"r ");
$c=fread($h,filesize($f));
fclose($h);
//Menampilkan di Layar
echo"$c";
?>
Jalankan counter.php via localhost..
dani
saya mengalami masalah pada baris 'if(mysql_num_rows($s) == 0)' padahal sebelumnya tidak ada masalah apapun. Bagaimana cara memperbaikinya?
Agus Saputra
dani @ masalahnya bagaimana?
opy
terima kasih tutorialnya mas, sy sdh coba dan berhasil.
Tapi pada pengunjung online defaultnya itu 6 bukan 1, walau yang buka cuma 1. itu kenapa ya mas?
makasih sblmnya
Agus Saputra
opy @ tutorial diatas adalah hits counter, jadi menghitung setiap kali terjadi proses.. diatas itukan ada skrip
$isi=$c+1;
opy
alhamdulillah mas sudah, bisa jumlah yang online di tampilan browser sdh normal, tapi ketika lihat di tabel, kolom online isinya 1341975860 padahal sy akses ke localhost cuma 1 PC.
kira-kira kenapa ya mas?
mohon bantuannya terima kasih
gunver
blog walking
Guntara
Like This Kaak,..
hehe
Cakka
Ternyata ada juga blog nya programmer Indonesia yang cukup lengkap :)
Agus Saputra
Cakka @ :)
Muhammad Yusup Hamdani
kurang lengkap tuh mas, di database dan filed nya, engga sesuai
Agus Saputra
Muhammad Yusup Hamdani @ terima kasih untuk pemberitahuannya, sekarang sudah saya sesuaikan
damar
klo user statistik menggunakan codeignter gimana yah ?
Obat Herbal
Ini bisa dipasang di website?
she_gogon
mohon bimbingan, apabila ip address (data user)yg berkunjung tdk tersimpan ke dbase knp yah?
jamalcyber
mas saya mw tanya.kalau coding buat nampilin ip pengunjung yg menggunakan ip proxy gmn cranya.susah bgt soalnya dilacakny blz ke downloadcyber.byethost31.com y mas
Raey
boleh di coba gan. tx
NURROHMAN
terimakasih gan sudah berbagi, maw tanya jika kita ingin tahu page apa saja yang sudah dinbuka oleh ip unik bisa g?
zeifhend
apa ini bisa di pasang di wordpress gratis kah? thx
ht alinco dj a10
pusing bang liat script nya,hehhehe
Agus Saputra
ht alinco @ ya maaf, saat ini memang sedang dilakukan development untuk versi 2.0. termasuk juga pemilihan formnya..
Biar nggak pusing, copas aja kodenya, terus simpan dulu di file Notepad++ atau Text editor lainnya.. :)
viktor
mas agus kok gak buat buku lagi tentang Codeigniter dan jQuery? oh ya mas project web blog di buku Trik Kolaborasi Codeigniter dan jQuery apa udah pake CI versi 2? kapan di update ke versi terbaru
Agus Saputra
viktor @ untuk buku itu masih versi 1.7.2 / 3, karena pada saat itu versi itu merupakan yang terbaru..
faisal
mas maaf saya mau tanya, kalo kita tekan f5 / refresh page itu pengunjungnya tetap 1??
Feni Agustin
Faisal @ yah jelas mas.. itu kan berdasarkan IP.. jika mas refresh, berarti IP nya tetap sama bukan?.. jika di refresh dari komputer lain, ya baru akan bertambah..
wildan gani
mau tanya punya saya ada.
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in ...
pada baris baris ini yng dimaksud diatas .
$pengunjungonline = mysql_num_rows(mysql_query("SELECT * FROM tstatistika WHERE online > '$bataswaktu'")); // hitung pengunjung online
itu knp yah.??
Agus Saputra
Wildan Gani @ itu ada kesalahan dalam query nya mas.. apakah sudah sesuai dengan field database tabel tersebut?
wildan gani
udah gak eror lagi mas,
tpi data nya gak tampil. padahal di database udah masuk.
ferry
Makasih atas infonya
(www.milanondalle.com)
Agus Saputra
Wildan gani @ silahkan copas seluruh kodenya ke sini
f
fff
Reynaldi
Sangat berguna untuk ane, ditunggu kunjungannya <a href="http://reynaldi.my.id">www.reyna li.my.id</a>
Kubah Masjid
makasih sob infonya...ane coba dulu di web ane!!!
feridi
terimakasih gan artikelnya, sangat membantu
kunjungi juga punya saya ni gan
http://feridi.blog.upi.edu
Rental Mobil Palembang
Nice info
Exsan
gan mhn ijin tutorialnya gan, detailnya pasang gimana gan, thanks di tggu jwbanya.. slm knl
iklan toko bagus
saya bearu mencoba semoga bisa gan thanks
ds
sdsds
Ghani
Selamat Siang.
Saya mau tanya, apakah cara memangil IP di smartphone sama halnya dengan di PC?
Sebab saya sudah online-kan codingan ini, saya buka di PC hasilnya bagus. Namun saat saya buka di smartphone awalnya sudah bagus, namun setelah saya refresh (reload) di smartphone tiba-tiba bertambah jumlah yang "visitor pengunjung". Hal yang saya tanyakan, apakah IP di smartphone memiliki lebih dari "satu" ?
Terima Kasih
Ghani
Agus Saputra
Ghani @ sudah dibalas di email ya mas
yoga
ada error sebagai berikut, saya jalankan lewat localhost, mohon petunjuk.
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\statistik\index.php on line 14
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\statistik\index.php on line 22
Warning: mysql_result() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\statistik\index.php on line 23
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\statistik\index.php on line 25
Raka
Thanks Gan
Cara setting router dlink dengan mudah
Terimakasih sangat bermanfaat sekali
Jgn lupa kunjungi juga blog saya
nina
terima kasih sekali sudah share kode program statistik diatas. Saya udah coba dan hasilnya untuk pengunjung online kenapa tetap menampilkan 1 user padahal dicoba online di 3 komputer berbeda.
trus rumus $bataswaktu = time()-300; itu maksudnya apa ya?
MOHON BANTUANNYA. terima kasih.
nina
terima kasih sekali sudah share kode program statistik diatas. Saya udah coba dan hasilnya untuk pengunjung online kenapa tetap menampilkan 1 user padahal dicoba online di 3 komputer berbeda.
trus rumus $bataswaktu = time()-300; itu maksudnya apa ya?
MOHON BANTUANNYA. terima kasih.
haibati kudrah
mantap, tp 1 ip 1 hari untuk 1 count kan?
gmn klo kjadiannya pengunjung yg akses webnya di warnet?, ip sama dihari yg sama tapi sipengunjung yg berbeda, kan jd rugi di count nya.
AGUS SAPUTRA
Haibati Kudrah @ sistem php ini hanya menghitung IP yang berbeda, itu tergantung dari IP yang digunakan dari networknya, static atau dynamic..
Wapcuy
Izin praktek gan, kebetulan ini yg lg saya cari2
AGUS SAPUTRA
wapcuy @ silahkan gan
zaki
jumlah angka pengunjuk/statistikanya kalo ditempatkan di sisi admin bagaimana om carane?
AGUS SAPUTRA
zaki @ tinggal copy aja kode buat nampilinnya di admin.. kalo kode untuk menangkap/menyimpan pengunjung sih tetap di halaman pengunjung.. di admin, tinggal tarik data saja
Bukirom, ST
Pengganti mysql_result di MySQLi apa pak? Karena coding di atas sudah tidak disarankan pada PHP 5 ke atas.
AGUS SAPUTRA
Bukitom, ST @ bisa menggunakan mysqli_fetch_array atau mysqli_num_rows ..
Omah Pustaka
ijin praktek mas, :D masih bingung nyusun-nyusun logikanya. Mau dibuat rekap data pengunjung per jam/hari/bulan. Sama post yang sering dikunjungi. Kalo untuk realtime gini berat gak mas kalo dijalankan di server? bukan buat offline.
Terimakasih
AGUS SAPUTRA
Omah Pustaka @ masalah berat atau tidak tergantung dari trafik pengunjung dan juga dari sisi server juga, karena kode ini merekam/ menyimpan secara manual IP, dll di database, dan mungkin akan berat disisi loadingnya.. kalo servernya mumpuni dan kodenya minimize yang tidak apa-apa.. tapi kalo sudah memberatkan server, coba gunakan pihak-3 saja untuk hal ini
http://teziger.blogspot.com
kalau set di pdo gimana gan?
Muhamad Ardi Firdaus
ini error nya gitu bang , gimna yaa?
sebelumnya makasih
Fatal error: Uncaught Error: Call to undefined function mysql_query() in C:\xampp\htdocs\onesolution\utama.php:11 Stack trace: #0 {main} thrown in C:\xampp\htdocs\onesolution\utama.php on line 11
AGUS SAPUTRA
Muhammad Ardi Firdaus @ Jika Anda menggunakan server xampp versi terbaru, maka mysql_query tidak lagi digunakan, sebagai gantinya bisa menggunakan mysqli_query