Sitenizi ziyaret edenlerin nereden geldiğini öğremek
|
#5189 |
|
|
Kaan
User is:
Posts: 2772
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 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. ![]() |
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 |














