• 06-05-2009, 20:23:24
    #1
    Eposta Aktivasyonu Gerekmekte
    Merhaba arkadaşlar

    Değişik sitelerde gördüğüm googleden gelen ziyaretçilerin hangi kelimeleri yazarak sitenize ulaştığını sitenizde gösterebilme zımbırtısını nasıl yapabileceğinizi anlatacağım.

    Bunun için vbulletinde "vbulletin tag cloud" adında bir eklenti var.Bunu kendi yazdığım sitemde de kullanmak istiyordum.
    Ama neden kullanacaktım?
    Bu konu hakkında biraz araştırma yaptım acayip hit çekiyor diyorlar bende denemekten zarar gelmez diye php ile yapıyım dedim.
    Yaptıktan 1 gün sonraki
    Google Analytics verilerinin resmini koydum.


    Büyük ihtimal dalgalandırmadır diye pek önem vermedim ben.Yorumu size bırakıyorum.

    Öncelikle bu uygulamayı tamamen kendim yazdım ama arama kelimelerini göstermek için kullandığım sayfayı vbulletin tag cloud'dan alıp düzenledim.Çünkü hiti çok olanları büyük göstermeye fazlaa kafa yoramadım bir ara uğraştım ama kafam karıştı o kısmı vbulletin tag cloud'dan aldım.

    PHP ye yeni başlayan kullanıcılar için basite indirgemek için 3 dosya halinde dağıttım.Bu haliyle iyice çarşafa doladım ama neyse

    Sözü fazla uzatmayım.


    Sql kodlarımız:

    CREATE TABLE IF NOT EXISTS `arama` (
      `id` int(11) NOT NULL auto_increment,
      `kelime` varchar(100) character set latin5 NOT NULL,
      `link` varchar(100) NOT NULL,
      `hit` int(11) NOT NULL default '1',
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
    İlk dosyamız googleden gelen kelimeleri yakalayacağımız dosyamız olan

    googlearama.php :

    <?php
    
    $link=$_SERVER["HTTP_REFERER"]; // Kullanıcının bu sayfaya hangi sayfadan geldiği bilgisini alıyoruz.
    if(!eregi('&btnG',$link)) { //&btnG yoksa ekliyoruz.
    $link=$link."&btnG";
    }
    $link=str_replace("http://","",$link); // / işaretine göre bölceğimizden http:// atıyoruz.
    $linkbol=explode("/",$link); //google.com.tr den sonrasını alıyoruz.
    $link=urldecode($linkbol[1]); //url decode yapıyouz
    $ara   = array ('ı','Å?','ü','ç','ö','Ä?','ÅŸ','Ç','İ','ÄŸ','Å?','Ö','Ü','ı','Å?','ç','ö','Ä?','ÅŸ','Ç','İ','ÄŸ','Å?','Ö','Ü','ü','ÄŸ'); 
    $degis = array ('ı','ş','ü','ç','ö','ğ','ş','Ç','i','ğ','Ş','Ö','Ü','ı', 'ş', 'ç', 'ö', 'ğ', 'ş', 'Ç', 'i', 'ğ', 'Ş', 'Ö', 'Ü', 'ü', 'ğ'); 
    $link  = str_replace($ara, $degis, $link);  // türkçe karakterlerde sorun varsa onu düzeltiyoruz.
    preg_match_all('#&q=(.*?)&#si',$link,$link); //q= aradığımız kelimeleri tutuyor & ile biten kısma kadar aradaki yeri alıyoruz.
    $link=str_replace("+"," ",$link[1][0]); // boşluklar linkte + olarak geçtiğinden + ları boşluk yapıyoruz.
    $link=htmlspecialchars(mysql_real_escape_string($link)); // veriler süzdürüyolor
    function turkcekucuk($buyuk) { 
    $buyuk=strtr($buyuk,"IĞÜŞİÖÇ","ığüşiöç");
    return Strtolower($buyuk);
    }
    $link=trim(turkcekucuk($link)); // veriler küçültülüyor.
    
    $varmiacep=mysql_fetch_array(mysql_query("SELECT count(id) FROM arama WHERE kelime='$link'")); // kelime var mı ki?
    $vardir=$varmiacep[0];
    if($vardir==1) { // varsa kelimenin hitini arttırıyoz.
    if(!eregi('site:',$link)) { //site:siteismi.com değilse hiti arttırdık 
     if(mysql_query("UPDATE arama SET hit=hit+1 WHERE kelime='$link'")) {
    }
     }
    	
    } else { //yoksa 
    	$linik=$_SERVER["REQUEST_URI"]; //url i aldık
    	if(strlen($link)<=101 || strlen($linik)<=101) { // bilgileri fazla uzun değilse işleme geçiyoruz.
    if(!eregi('site:',$link)) { //site:siteismi.com değilse hiti arttırdık 
     if(mysql_query("INSERT INTO arama(kelime,link) values('$link','$linik')")) { // veritabanına ekliyoruz
    }
     }
    }
    }
    ?>
    gogil.php

    <?php
    $ref=@$_SERVER['HTTP_REFERER'];
    if (eregi("google.com", $ref)) {
    include ("googlearama.php");
    }
    ?>
    kelimelerin listelendiği sayfa :
    gogilkelime.php :

    <br><br><br><br>
    <table align="center" width="%70">
    <tr><td>
    Google Arama Kelimeleri</td></tr><tr><td>
    
    
    <?php
    
    $m_minFont     = 85;   // The minimum font size. No keywords will be smaller than this. This is a %
    $m_maxFont     = 150;  // The maximum font size. No keywords will be bigger than this. This is a %
    $m_averageFont = 100;   // The font size of an average searhced for keyword. This is a %
    $m_maxEntries  = 50;   // Maximum number of entries displayed in the cloud
    $m_showCount   = 0;    // Whether counts are shown along with each entry
    
    $m_blackList   = array();
    	
    $maxEntries = $m_maxEntries;
    
    	function _validKeyword($k)
    	{
    		global $m_blackList;
    	
    		if (!(strpos($k,"site:") === FALSE))
    		{
    			return FALSE;
    		}
    
    		foreach ($m_blackList as $w)
    		{
    			if (!(strpos($k,$w) === FALSE))
    			{
    				return FALSE;
    			}
    		}
    
    
    		return TRUE;
    	}
    		
    		$sql = mysql_query("SELECT * FROM arama order by hit DESC limit $maxEntries");
    		$rec = $sql;
    
    		$numRows = mysql_num_rows($rec);
    		if ($numRows == 0)
    		{
    		    return;
    		}
    
    		while ($datas = mysql_fetch_array($rec))
    		{
    			$d[] = $datas;
    		}
    
    
    		$minFont=$m_minFont;
    		$maxFont=$m_maxFont;
    		$averageFont=$m_averageFont;
    
    		usort($d,_cmpKw);
    
    
    		$count=0;
    		foreach ($d as $datas)
    		{
    		    $sum += $datas['hit'];
    		    $count++;
    		}
    
    		if ($count == 0)
    		{
    		    $avg = 1;
    		}
    		else
    		{
    		    $avg = $sum / $count;
    		}
    
    
    		foreach ($d as $datas)
    		{
    			if (!_validKeyword($datas['kelime']))
    			{
    				continue;
    			}
    
    			$a = $datas['hit'] / $avg;
    
    			$fontSize = ceil($a * $averageFont);
    
    			if ($fontSize < $minFont)
    		    {
    				$fontSize = $minFont;
    		    }
    			if ($fontSize > $maxFont)
    		    {
    				$fontSize = $maxFont;
    		    }
    		  
    			if ($m_showCount)
    			{
    				$countText = "<span style='font-size:$minFont%'>$datas[hit]</span>";
    			}
    			else
    			{
    				$countText = "";
    			}
    			 if ($a > 0.8)
    			{
    				echo " <b><a href='$datas[link]' style='font-size:$fontSize%'>$datas[kelime]</a></b> $countText \n";
    			}
    			else
    			{
    			    echo " <a href='$datas[link]' style='font-size:$fontSize%'>$datas[kelime]</a> $countText \n";
    			}
    		}		
    
    
    function _cmpKw($a,$b)
    {
    	return strcmp($a['kelime'],$b['kelime']);
    }
    ?>
    </td></tr>
    </table>
    veritabanı bağlantısını sonradan yaparsınız kendiniz.

    DEMO : P O P M U N D O Destek-Ana Sayfa

    Sayfanın altında görebilirsiniz.

    Kullanımı:

    1-) include("gogil.php"); yi tüm sayfalara ekliyoruz böylece googleden geldiyse ziyaretçi kelime ekleniyor vs..

    2-) include("gogilkelime.php"); yi kelimeleri gösterceğiniz sayfalara ekliyorsunuz.

    3-) sql kodlarımızı çalıştırıp tablomuzu oluşturuyorsunuz.

    İşte bu kadar



    yorumlarınızı bekliyorum
  • 06-05-2009, 20:42:50
    #2
    @dualwarior üstad çok faydalı bir bilgi vermişsin en kısa sürede inceleyeceğim ve script'ime uyarlayacağım, çok teşekkürler.
  • 06-05-2009, 20:45:25
    #3
    Eposta Aktivasyonu Gerekmekte
    Jotuxi adlı üyeden alıntı: mesajı görüntüle
    @dualwarior üstad çok faydalı bir bilgi vermişsin en kısa sürede inceleyeceğim ve script'ime uyarlayacağım, çok teşekkürler.
    Ben teşekkür ederim.

    Düzenleme : 2-3 gün sonra tekrar Google Analytics verilerini koyucağım.Bakalım cidden işe yarıyor mu? Kullananlarda işe yarayıp yaramadığını belirtirse daha yön gösterici olur.
  • 06-05-2009, 21:09:37
    #4
    PHP bilgisi az olanların bunu nasıl editleyeceği meçhul.
    Ben onlardan biriyim.
  • 06-05-2009, 21:26:03
    #5
    Üyeliği durduruldu
    konu taşınsa yada vbulletin bölümüne açılsa daha iyi olurmuştu bence
  • 06-05-2009, 21:40:29
    #6
    Eposta Aktivasyonu Gerekmekte
    janocan adlı üyeden alıntı: mesajı görüntüle
    PHP bilgisi az olanların bunu nasıl editleyeceği meçhul.
    Ben onlardan biriyim.
    Kurulumdaki adımları izleyerek kurabilirsiniz.
    vt.php yada bu ada yakın ada sahip bir php dosyanızın olması lazım, veritabanı bağlantısının yapıldığı.
    Zaten makaleoku.php gibi makale okunan sayfada db bağlantısı zaten yapılmıştır.
    O zaman geriye googlearama.php ve gogil.php dosyalarını include etmek kalıyor.

    Yapmayı deneyin, takıldığınız yer varsa özel mesaj atın.Yardımcı olmaya çalışırım.


    sdemirkeser adlı üyeden alıntı: mesajı görüntüle
    konu taşınsa yada vbulletin bölümüne açılsa daha iyi olurmuştu bence
    yok usta kendi sitenize koyabilirsiniz.Vbulletinde böyle bir eklenti vardı.Bende kendi script yazanlar için ya da kendi sitesini kodlayanlar için böyle bişeyin nasıl yapılacağını anlatmak istedim.
  • 06-05-2009, 21:44:40
    #7
    zaten satan arkadaşlardan biri de o eklentiden alıp editlemiş.
  • 06-05-2009, 21:49:36
    #8
    Eposta Aktivasyonu Gerekmekte
    Cagonni adlı üyeden alıntı: mesajı görüntüle
    zaten satan arkadaşlardan biri de o eklentiden alıp editlemiş.
    Kimin sattığını bilmiyorum ama burdaki kodları , veritabanından çekip listeleme haricindeki kısmındakileri ben yazdım.Kendi siteme koydum, burada da paylaştım başkalarıda yararlansın diye.Zaten o eklentide OOP ile yazılmış.Ben OOP çakmıyorum pek.Veritabanındaki verilerin listelendiği yeri de oop'tan çıkarıp düz hale getirirken uğraştım baya.
  • 06-05-2009, 21:51:16
    #9
    güzel bilgi sağol