Menghitung Jumlah Pengunjung Berdasarkan IP Address dengan Script PHP-MySQL

Menghitung Jumlah Pengunjung Berdasarkan IP Address dengan Script PHP-MySQL

Tutorial Information

ProgramPHP
Version5.3
DifficultyStandar
Estimated Time15 Menit

Beberapa dari kita pasti pernah mengunjungi sebuah web yang didalamnya menampilkan counter jumlah pengunjung berdasarkan IP Address. Hal ini sangat berguna untuk mengetahui seberapa…

Beberapa dari kita pasti pernah mengunjungi sebuah web yang didalamnya menampilkan counter jumlah pengunjung berdasarkan IP Address. Hal ini sangat berguna untuk mengetahui seberapa banyak pengunjung unik yang mampir ke web kita dalam waktu tertentu. Apabila ada pengunjung dengan alamat IP yang sama mengunjungi web kita, maka tidak akan dihitung sebagai pengunjung baru. Sebaliknya, apabila ada pengunjung dengan alamat IP yang berbeda mengunjungi web kita, maka ia dapat dikatakan sebagai pengunjung unik, sehingga angka counter pun bertambah.

Jika kita pernah menggunakan blog, biasanya sudah disediakan script khusus (bisa berupa plugin/modul) yang secara otomatis dapat dipasang langsung ke dalam blog kita. Namun, bagaimana jika kita menginginkan alamat IP Address tersebut tersimpan dalam database kita, kemudian dihitung dengan bantuan query PHP-MySQL?

Tutorial kali ini akan membahas hal tersebut secara lebih lanjut. ikuti langkah-langkah berikut ini:

Membuat Database untuk Menyimpan IP Address

Nama tabel yang digunakan dalam tutorial ini adalah tabel ‘counter’, yang memiliki kolom ‘id’, ‘location’, dan ‘ip’. Kolom ‘id’ menunjukkan pengenal yang diurut secara auto increment, kolom location nantinya akan berisi path halaman web yang diakses, dan kolom ip merupakan alamat ip yang tersimpan dalam database.

CREATE TABLE IF NOT EXISTS `counter` (
  `id` int(250) NOT NULL AUTO_INCREMENT,
  `location` varchar(250) NOT NULL,
  `ip` varchar(250) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=15 ;

 

Membuat Fungsi untuk Mendapatkan Alamat IP Pengunjung

Fungsi ini selain berfungsi untuk menangkap alamat IP Address pengunjung, juga berfungsi untuk menangkap server path. Selanjutnya, setiap IP Address dan server path yang diperoleh akan segera disimpan ke dalam log database.

 

function initCounter() {

     $ip = $_SERVER['REMOTE_ADDR']; // menangkap ip pengunjung
     $location = $_SERVER['PHP_SELF']; // menangkap server path

     //membuat log dalam tabel database 'counter'
     $create_log = mysql_query("INSERT INTO counter(ip,location)VALUES('$ip', '$location') ");

}

Membuat Fungsi untuk Menghitung Jumlah Pengunjung

Pada script ini perhitungan dibagi dalam dua jenis. Jenis yang pertama yaitu menghitung seluruh   IP Address yang ada di kolom ‘ip’. Jenis yang kedua yaitu menghitung IP Address unik, artinya jika ada IP Address yang sama, maka akan dihitung sebagai satu IP Address. Dalam PHP, perhitungan jenis ini biasanya dilakukan dengan Query PHP-SQL berupa perintah ‘DISTINCT’ (http://www.w3schools.com/sql/sql_distinct.asp).

function getCounter($mode, $location = NULL) {

if(is_null($location)) {
     $location = $_SERVER['PHP_SELF'];
}

if($mode == "unique") // query perhitungan IP Address unik
{ 
     $get_res = mysql_query("SELECT DISTINCT ip FROM counter WHERE location = '$location' ");
}     else{ // query perhitungan seluruh IP Address (tidak unik)
     $get_res = mysql_query("SELECT ip FROM counter WHERE location = '$location' ");
}

$res = mysql_num_rows($get_res);

return $res;

}

Penggabungan Fungsi

Selanjutnya, fungsi yang telah dibuat yaitu fungsi untuk menangkap IP Address pengunjung dan Fungsi untuk menghitung jumlah pengunjung digabungkan ke dalam sebuah script ‘counter.php’ dan dihubungkan ke database  yang telah dibuat melalui setting koneksi database.

<?php

// setting koneksi ke database
mysql_connect("localhost", "root", ""); // isikan nama server, username, dan password Anda
mysql_select_db("example"); // nama database yang Anda gunakan

function initCounter() {

     $ip = $_SERVER['REMOTE_ADDR']; // menangkap ip pengunjung
     $location = $_SERVER['PHP_SELF']; // menangkap server path

     //membuat log dalam tabel database 'counter'
     $create_log = mysql_query("INSERT INTO counter(ip,location)VALUES('$ip', '$location') ");

}

function getCounter($mode, $location = NULL) {

if(is_null($location)) {
     $location = $_SERVER['PHP_SELF'];
}

if($mode == "unique") {
     $get_res = mysql_query("SELECT DISTINCT ip FROM counter WHERE location = '$location' ");
}     else{
     $get_res = mysql_query("SELECT ip FROM counter WHERE location = '$location' ");
}

$res = mysql_num_rows($get_res);

return $res;

}

?>

Membuat Antarmuka

Berikutnya membuat antarmuka untuk menampilkan hasil perhitungan jumlah pengunjung. Simpan script berikut ke dalam sebuah file, misalnya index.php. Jangan lupa simpan ke dalam folder yang sama dengan script counter.php.

<?php

include_once("counter.php"); // meng-include-kan script counter.php untuk menghitung jumlah pengunjung

initCounter(); // memanggil fungsi 'initCounter()' untuk membuat log pengunjung saat ini

echo "<h4>Contoh Membuat IP Counter Pengunjung Website </h4>";

echo "Halaman ini telah dikunjungi oleh ".getCounter('hits')." pengunjung, yang terdiri dari ".getCounter('unique')." pengunjung dengan IP Address unik";

?>

Pada script di atas kita cukup memanggil fungsi-fungsi yang ada di dalam script ‘counter.php’. Untuk menampilkan seluruh jumlah total pengunjung, dilakukan dengan memanggil fungsi ‘getCounter(‘hits’)’. Sedangkan untuk menampilkan jumlah pengunjung dengan IP Address yang unik saja dapat dilakukan dengan memanggil fungsi ‘getCounter(‘unique’)’.

Menguji Script ke dalam Browser

IP Counter

Contoh Membuat IP Counter pada Browser

Cobalah untuk melakukan refresh halaman tersebut berkali-kali dan amati. Apabila Anda meletakkan script tersebut di localhost komputer atau laptop Anda sendiri, maka IP Address unik hanya ada satu (karena localhost mempunyai alamat yang sama), yang bertambah hanyalah jumlah pengunjung total. Setiap kali Anda me-refresh halaman index.php, maka jumlah pengunjung total semakin bertambah. Namun, jika script tersebut Anda letakkan di server publik yang dapat diakses oleh komputer yang berbeda, maka kemungkinan jumlah IP Address unik/berbeda yang tersimpan juga akan bertambah.

Script di atas tentu saja dapat dimodifikasi sedemikian rupa untuk memenuhi kebutuhan web developer. Contoh di atas hanyalah ide tentang bagaimana cara mengetahui IP Address pengunjung sebuah web, kemudian menyimpannya ke dalam database, untuk selanjutnya dapat dihitung dan ditampilkan ke antarmuka web. Mudah dan sederhana, bukan?

Tag: , , , ,

28 Comments

Leave Comment
  1. nurielmos says:

    kerenn gan,,
    tapi bisa gak ya nge’blok pengunjung ke website kita berdasarkan IP?

  2. Majas says:

    tertarik dengan ulasan mas, saya admin blog dimana blog kami lebih banyak kami diakses oleh jaringan lokal kami. Memungkinkan tidak mas apabila pengunjung blog kami dimana IP addressnya di komputer masing telah di catat admin IT, ketika mengunjungi blog situs bisa dideteksi bahwa yang masuk adalah dari komputer yang dipegang A atau B dst. Sehingga ketika si A atau si B ini sedang melihat blog kami di widget telah ada sambutan untuk ybs, “Selamat datang A Dosen Prodi xxxxx dst”, terimakasih

  3. Majas says:

    nambah dikit mas …………… kalau saya gunakan widget/script yang sudah umum itu IP add yang muncul sama semua karena dalam satu jaringan. matur nuwun

  4. irma says:

    numpang tanya mas, klo aku mau ngitung jumlah koment per orang yang ada di fb-ku bisa ga..?
    contoh : si-A, B,C, dst… sudah koment berapa kali di statusku selama bulan ini,
    makasih….

  5. rifa says:

    Ma kasih gan, sy coba dulu yak’..

  6. Rahman Surya says:

    Bahaya Juga nih kalo pengunjung refresh terus..bisa bengkak database…tapi nice share kk

  7. cahyo says:

    gan, bila kita ingin mengetahui jumlah pengunjung website orang lain dan dari negara mana apa bisa.

  8. gan gak bisa di looping tuh gan, jadi IP yang sudah ada di database gak masuk lagi …
    dan ditambah hits per IP bisa tuh gan :)

    thanks for shared

  9. dicky says:

    Cara tes uniq ip gimna? Kalok localhlost

  10. gan kalo buat hitsnya 6 digit kayak mana gan, thnks tutorialya di atas

  11. Agus says:

    duh mau kreatif ribet yah? Hehe tek save nih buat kelak jka udah bsa beli hosting sndiri ga ky skrg numpang blogngepet

  12. berhasil… ada bentuk widget nya, gan? untuk wordpress

  13. ribet juga ya, gan
    ada yang simpel ga? seperti script histats.com?

  14. Buyung Rowi Hadi Saputro says:

    kalau untuk menghitung perhari, perminggu, perbulan gimana caranya ya ?

    Mohon bantuannya

  15. ronald says:

    mas saya sudah mencoba semuanya di salah sat hosting, saya coba bisa kurang lebih selama 3 bulan, ko sekarang jadi tidak bisa ya ? muncul error yaitu di mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/u219316444/public_html/counter.php on line 64, errornya terletak pada $res = mysql_num_rows($get_res);

  16. kalau tidak pasang widget bisa nggak ya Om ?

  17. belajarhebat says:

    scriptnya bekerja makasih ya mas telah di share

  18. budi aman says:

    mas kalua di atas di terapkan di CI gmana?

    mohon solusinya

  19. budi aman says:

    mas kalau di atas di terapkan di CI gmana?

    mohon solusinya

  20. adhofar says:

    gan,,ko ip nya gk k simpan yah…

  21. ogi says:

    Bagaimana cara implementasi dengan framework codeigniter terimakasih minta pencerahannya…

Write Comment

Your email will not be published. The marked label is required.