Total Users Online: 0 üye, 538 guest | Tarih/Saat: 2026-08-26 03:43
 
Sitenizi ziyaret edenlerin nereden geldiğini öğremek
2011-02-28 22:07 GMT  oklu Alnt
Kaan

User is: Online status   Gender_M
Posts: 2772
Ülke: İstanbul - 34
Meslek: Serbest Meslek
Age: 43

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:
:
ysql]CREATE TABLE visitors (

  id int(11) NOT NULL auto_increment,

  visitor_referer varchar(45) collate utf8_bin NOT NULL,

  visitor_ip varchar(1 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:
:
hp]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.
Konuyla İlgili Diğer Başlıklar
Google Sitenizi Banladıysa...
Bu flüt nereden çıktı?
ziyaretçi nereden geliyor
Emlak, Oto Galeri, Rent A Car, ?iir, Edebiyat Script Sipari?lerinizi Verebilirsiniz.
Detaylar ??in: kaan@ntka.org

Seditio 170 ?ndir
Capte M?zik ?ndir
Seditio Toolbar ?ndir

 

Powered by Seditio © 2009-2012 All Rights Reserved