Sitenizi ziyaret edenlerin nereden geldiğini HTTP_REFERER ile öğrenmek ve ziyaretçilerin anlık kayıtlarını tutmak |
||||||
Sitenize ziyaret eden kişilerin kaynağını PHP ortanında öğrenmek $_SERVER dizisindeki HTTP_REFERER değişkeni sayesinde mümkün. Başka sitelerde
sitenize link verenler linke tıkladığında aynı zamanda nereden geldiğini HTTP_REFERER ile söylüyor.
Bu anahtar değişken sayesinde bir çok ziyaretçi istatistiği tutmak mümkün.
Hemen işe başlayalım.
Ziyaretçinin bilgilerini tutacak tabloyu veritabanında yaratalım:
CREATE TABLE visitors ( id int(11) NOT NULL auto_increment, visitor_referer varchar(45) collate utf8_bin NOT NULL, visitor_ip varchar(18) collate utf8_bin NOT NULL, visitor_request_url varchar(100) collate utf8_bin NOT NULL, visitor_visit_date date NOT NULL, PRIMARY KEY (id) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin ;Tablodaki alanları kısaca anlatayım: id : ziyaret id visitor_referer : sitenize link veren sitenin alan adı visitor_ip : sitenizi ziyaret eden kişinin ip numarası visitor_request_url : sitenize yapılan sayfanın URL adresi visitor_visit_date : ziyaretçinin ziyaret tarihi (2009-08-16 gibi) PHP scriptimizi yazmadan önce kaydı tablomuza girerken if else kontroluyle HTTP_REFERER değişkenin tanımlanıp tanımlanmadığını kontrol ediyoruz. Bu sayade Sitenize başka bir siteden mi yoksa direk siteye adres satırından girilip girilmediğini anlayabiliriz. İşte tüm işi yapacak PHP kodumuz: if ( isset ( $_SERVER['HTTP_REFERER'] ) )
{
// Regular expression ile sitenize link veren sunucunun domain adresini alıyoruz
preg_match('@^(?:http://)?([^/]+)@i', $_SERVER['HTTP_REFERER'], $matches);
$visitor_referer = $matches[1];
// Ziyaretçinin ip adresini alıyoruz
$visitor_ip = $_SERVER['REMOTE_ADDR'];
// İstek yapılan sayfanın adresini alıyoruz
$visitor_request_url =$_SERVER['REQUEST_URI'];
// Veritabanına bağlantı yapıyoruz
$conn=mysql_connect("localhost", "root" ,"");
mysql_select_db('database',$conn);
// Bugünkü tarihi kontrol etmek üzere alıyoruz
$today_date=date("Y-m-d");
// Daha önce ziyeretçinin aynı günde aynı ip adresle veya aynı sayfaya istek yapıp yapmadığını
// burada kontrol ediyoruz. Böylece aynı verileri tekrar girmekten kurtuluyoruz
$sql="select * FROM visitors where (visitor_ip= '$visitor_ip') AND (visitor_visit_date = '$today_date') AND (visitor_referer = '$visitor_referer')";
$result=mysql_query($sql , $conn );
$total =mysql_num_rows($result);
// 0 değilse daha önce bu verinin girilmediğini anlıyoruz
if ( $total == 0 )
{
$sql="INSERT INTO visitors VALUES ('NEW.id' ,'$visitor_referer','$visitor_ip','$visitor_request_url',NOW())";
mysql_query($sql,$conn);
}
}
// Bu kısımda ziyaretçi sitenizi direk olarak ziyaret ettiğinde yapılacak işi yapıyoruz.
// Tek farkı HTTP_REFERER bilgisine direct yazıyoruz.
else
{
$conn=mysql_connect("localhost", "root" ,"");
mysql_select_db('database',$conn);
$visitor_ip = $_SERVER['REMOTE_ADDR'];
$visitor_request_url =$_SERVER['REQUEST_URI'];
$today_date=date("Y-m-d");
$sql="select * FROM visitors where (visitor_ip= '$visitor_ip') AND (visitor_visit_date = '$today_date') AND (visitor_referer = 'direct') ";
$result=mysql_query($sql , $conn );
$total =mysql_num_rows($result);
if ( $total == 0 )
{
$sql="INSERT INTO visitors VALUES ('NEW.id' ,'direct','$visitor_ip','$visitor_request_url',NOW())";
mysql_query($sql,$conn);
}
}
Yaptığım örneği test edip çalıştırdım. Sonuç olarak aşağıdaki resme göz atabilirsiniz.
|
||||||
|
||||||
|
July 2010 (1)
April 2010 (4)
March 2010 (1)
February 2010 (3)
December 2009 (2)
November 2009 (1)
October 2009 (4)
September 2009 (16)
August 2009 (21)
July 2009 (4)
April 2010 (4)
March 2010 (1)
February 2010 (3)
December 2009 (2)
November 2009 (1)
October 2009 (4)
September 2009 (16)
August 2009 (21)
July 2009 (4)
Smarty Template Engine ..
PHP ile XML verisiyle ..
XAMPP ile PEAR MDB2 Pa ..
İlk görev yerim ;)
Sitenizin arama motorl ..
NetBeans ortamında Jav ..
Java Mobile 3D Oyun Pr ..
PHP ve Jquery ile Goog ..
Jquery ve css ile hare ..
SQL injection ve Korun ..
PHP ile XML verisiyle ..
XAMPP ile PEAR MDB2 Pa ..
İlk görev yerim ;)
Sitenizin arama motorl ..
NetBeans ortamında Jav ..
Java Mobile 3D Oyun Pr ..
PHP ve Jquery ile Goog ..
Jquery ve css ile hare ..
SQL injection ve Korun ..
Etiketler
| Ansi | Apache | Arama-merkezi | Arama-sonuçları | Asp.net | Class | Google | Html-parse | İlişkisel-veritabanı | Json | Mysql | Normal-formlar | Normalizasyon | Pear-framework | Php | Phpmyadmin | Singleton-patten | Tasarım | Tasarım-şablonu | Türkçe-karakter | Utf | Veritabanı | Xampp |arama
Loading

Zülküf Küçüközer
17th August 2009
Ziyaret | Httpreferer | Php | Visitorip
807
Ip | Visitors
XHTML