Mau tahu dari mana pengunjung situsmu berasal? Apakah dari search engine? Dari blog temen? Atau dari forum-forum yang kau ikuti? Semuanya dapat kita cari tahu melalui variabel HTTP_REFERER. Melalui http_referer, kita juga bisa mengetahui query-query search engine apa saja yang menghasilkan kunjungan ke situs kita. Apa manfaat mengetahui asal visitor ini? Banyak sekali. Salah satunya adalah mengetahui, apakah pengunjung kita sudah menemukan apa yang mereka cari, situs kita unggul pada keyword-keyword apa saja, dan tentu saja untuk mengetahui apakah situs kita sudah dapat ditemukan melalui search engine, dan kalau bisa, pada urutan ke berapa.
Sudah cukup banyak website yang menyediakan fasilitas visitor tracking ini. Contohnya: google analytics, histats.com, dan kebanyakan web hosting, baik itu gratisan maupun yang komersial, sudah memasukkan fasilitas untuk tracking semacam ini sebagai salah satu servis mereka. Namun, pada kesempatan kali ini, kita tidak akan membahas tentang penggunaan fasilitas instan tersebut. Sebagai seorang programmer (lebih tepatnya programmer gadungan, hhe), aku akan berbagi sedikit trik untuk membuat referer tracking sederhana menggunakan php dan mysql. Tentu saja artikel ini ditujukan buat kamu yang lebih sreg pakai produk buatan sendiri, layaknya lebih sreg memakai produk buatan Indonesia daripada produk import. Hasyah,
Berikut fungsi sederhana untuk mencatat referer menggunakan php ke dalam database mysql. Fungsi ini saat ini juga kupakai untuk mencatat asal visitor web ini. Yah, sebenarnya udah dimodif dikit sih, biar lebih sederhana. Kalau kamu masih merasa kurang, n pengen ngembangin lagi, silakan atuh.
<?php
function getReferer(){
//ganti dengan url web kamu
$url_website="http://rudyhartadi.web.id";
//variabel untuk mencatat referer
$referer=$_SERVER['HTTP_REFERER'];
//cek referer. bila berasal dari web kita, localhost, atau direct access, maka tidak dicatat
if((!strpos($referer,$url_website,0))&&(!strpos($referer,"http://localhost",0))&&($referer!='')){
//cek, apakah sudah ada dalam database
$query=mysql_query("SELECT id FROM referer WHERE referer='$referer'");
$is_exist=mysql_num_rows($query);
//jika belum ada, simpan ke database
if($is_exist==0){
mysql_query("INSERT INTO `referer`(`referer`) VALUES('$referer')");
}
//cek apakah berasal dari google
//bila iya, kembalikan keyword yang digunakan
//bila tidak, fungsi preg_match akan menghasilkan nilai false
preg_match("'^http://www\.google\..*/.*[?|&](?>as_q|q)=(\S[^&]*)'si", $referer, $hasil);
return urldecode($hasil[1]);
}
//bila berasal dari web kita, localhost, atau direct access, kembalikan nilai false
return false;
}
?>
Sebelumnya, aku harap kamu udah tahu sedikit tentang php & mysql. Karena aku tidak bisa (lebih tepatnya sih, malas, hhe) menjelaskan fungsi getReferer() di atas secara terperinci. Untuk mengetahui cara kerjanya, silakan dibaca di bagian komentarnya. Apabila pengunjung kita datang dari hasil pencarian google, maka fungsi getReferer() akan mengembalikan "query string (keyword)" yang digunakan. Bagaimana untuk search engine yang lain? Yah, silakan berkreasi sendiri. Gampang kok, kan tinggal ubah Regular Expression yang ada di dalam fungsi preg_match() doang?! Hehe.
Oh iya, untuk membuat table dalam database mysql yang akan digunakan untuk menyimpan data referernya, dapat menggunakan struktur table berikut ini:
DROP TABLE IF EXISTS `referer`;
CREATE TABLE IF NOT EXISTS `referer`(
`id` smallint(5) unsigned NOT NULL auto_increment,
`referer` text NOT NULL,
PRIMARY KEY (`id`)
)ENGINE=MyISAM DEFAULT CHARSET=utf8;
Contoh penggunaan:
<?php
$is_google=getReferer();
echo $is_google?"Kamu berasal dari google dengan keyword: '$is_google'":"Kamu tidak datang dari google";
?>
Kalau masih bingung bagaimana cara pakainya, berikut contoh full scriptnya.
<?php
mysql_connect($server,$username,$password);
mysql_select_db($database);
function getReferer(){
$url_website="http://rudyhartadi.web.id";
$referer=$_SERVER['HTTP_REFERER'];
if((!strpos($referer,$url_website,0))&&(!strpos($referer,"localhost",7))&&($referer!='')){
$query=mysql_query("SELECT id FROM referer WHERE referer='$referer'");
$is_exist=mysql_num_rows($query);
if($is_exist==0){
mysql_query("INSERT INTO `referer`(`referer`) VALUES('$referer')");
}
preg_match("'^http://www\.google\..*/.*[?|&](?>as_q|q)=(\S[^&]*)'si", $referer, $hasil);
return urldecode($hasil[1]);
}
return false;
}
$is_google=getReferer();
echo $is_google?"Kamu berasal dari google dengan keyword: '$is_google'":"Kamu tidak datang dari google";
?>
Catatan: dua baris awal script di atas merupakan fungsi untuk melakukan koneksi ke server mysql dan memilih database yang akan digunakan. Sekali lagi maaf, fungsi tersebut tidak dibahas dalam artikel ini. Sesuaikan variabel yang ada dalam kedua fungsi tersebut sesuai dengan setting servermu dan nama databasemu. Kalau belum tahu tentang cara mengoneksikan mysql dengan php, silakan googling aja ya, hhe.
Seperti apa sih hasil dari fungsi tersebut? Untuk tes, silakan ubah nilai variabel $referer menggunakan string berisi url, misal:
dari
$referer=$_SERVER['HTTP_REFERER'];
menjadi
$referer="http://www.google.com/search?gbv=2&hl=en&q=profil+orang+sukses&start=40&sa=N";
Penting gak sih, mencatat referer? Penting gak penting sih. Tapi gak ada salahnya kok, kalau kita menyimpannya. Sedikit mengulang manfaat yang telah disebutkan di atas. Suatu ketika, ada visitor yang mencari tentang 'profil orang sukses' menggunakan google. Dan ternyata setelah 4 kali menekan tombol next, akhirnya dia menemukan Rudy Hartadi Webs. Setelah mampir ke blog ini, apa yang terjadi? Tentu saja pengunjung itu mengalami kekecewaan. Karena emang aku gak pernah menulis artikel tentang 'profil orang sukses' kok.
Selidik punya selidik, ternyata penyebab blog ini tampil pada hasil pencarian 'profil orang sukses' adalah frasa 'orang-orang yang sukses' yang terdapat pada artikel Menjadi Orang Yang Kreatif, dan kata 'profil' pada artikel Memasukkan JavaScript ke Profile Friendster.
Dengan begitu, kita telah mengetahui, bahwa peringkat blog ini pada saat itu cukup tinggi untuk keyword profil orang sukses, yah walaupun masih urutan ke 40 ke atas sih, tapi mendinglah dibanding jumlah hasil pencarian yang mencapai ratusan, ribuan, bahkan jutaan. Karena peringkat blog kita cukup tinggi dan kita pasti tidak ingin mengecewakan pengunjung berikutnya yang mencari tentang profil orang sukses dan menemukan blog kita lagi, maka kita dapat menulis sebuah artikel tentang profil orang sukses ini. Dengan demikian, pengunjung berikutnya tidak akan kecewa lagi deh.
Yah, walaupun ini termasuk jurus SEO yang hebat, canggih, spektakuler, dan bombastis, halah lebay, namun jangan sampai blog kita kehilangan fokus/tema utamanya. Peringkat google serta trafik yang tinggi tidak sebanding dengan idealisme kita. Bagaimanapun juga, menjadi diri sendiri adalah hal yang terbaik. Nah lo, mulai gak nyambung tho?!
Gimana? Berminat mencoba? Kalau masih ada problem, jangan pernah ragu untuk berdiskusi ama aku. Bisa lewat komen, e-mail, gtalk, ym, friendster, facebook, myspace, orkut, sms, telpon, dsb. You're Welcome. Maaf ya, kalau pembahasannya membingungkan, hhe.