• 08-12-2012, 12:27:57
    #1
    Merhabalar sef link uygulaması yapıyorum.
    Bir sıkıntıyla karşılaştım neden olabilir ?

    function.php
    # Kategori Sef Yarat
    function sef_kategori($type)
    {
       if ($type)
       return sprintf('kategori/%s/',$type);
    }
    # Kategori Sef Yarat
    
    # Kategori Getir
    function kategori($id = 0, $string = 0, $ustid)
    	{
    	global $root;
    	$query = mysql_query("select * from category where kategori_ust_id = '$id'");
    		if(mysql_num_rows($query))
    		{
    			while($row = mysql_fetch_array($query))
    			{
    				echo '<li><a ';
    				echo'href="'.$root.''.sef_kategori($row["sef"]).'" alt='.$row["title"].' title='.$row["title"].' >'.$row["kategori_id"].'.'.$row["kategori_adi"].'</a></li>';
    				kategori($row["kategori_id"], $string + 2, $ustid);
    			}
    		}else
    		{
    			return false;
    		}
    	}
    # Kategori Getir
    index.php
    <?php kategori(0,0,$row["kategori_ust_id"]); ?>
    .htaccess
    Options +FollowSymLinks
    Options All -Indexes
    Options +FollowSymLinks
    RewriteEngine On
    RewriteRule (.*)-(.*)\.html$  single.php?id=$1&baslik=$2[L]
    RewriteRule ^kategori/? category.php [NC,L]
    RewriteRule  kategori/(.*)/ category.php?type=$1 [L] 
    RewriteRule ^sitemap.xml sitemap.php [NC]
    RewriteRule ^ziyaretci-defteri.html zdefter.php [NC]
    RewriteRule ^iletisim.html iletisim.php [NC]
    category.php
    $sef = mysql_real_escape_string(strip_tags($_GET["sef"]));
    echo $sef;
    Kod bloklarım bunlar, kısalttım arkadaşlar..

    Kategorilerin linkleri www.siteadi.com/kategori/kategori-adi/ şeklinde gözüküyor.
    linke tıkladığımda www.siteadi.com/kategori/kategori-adi/ gidiyor.

    Fakat $sef = mysql_real_escape_string(strip_tags($_GET["sef"])); bulamadığından hata alıyorum. Sorguları gerçekleştiremiyorum neden olabilir ?

    Edit: Kategorilerin linklerini kategori fonksiyonundan <a href>'ten getiriyorum.
  • 08-12-2012, 12:34:50
    #2
    RewriteRule ^kategori/? category.php [NC,L]
    böyle olmalı:
    RewriteRule ^kategori/(.*) category.php?sef=$1 [L]
  • 08-12-2012, 12:40:39
    #3
    miscel adlı üyeden alıntı: mesajı görüntüle
    RewriteRule ^kategori/? category.php [NC,L]
    böyle olmalı:
    RewriteRule ^kategori/(.*) category.php?sef=$1 [L]
    Allah razı olsun hocam. Her konumda yardımcı oluyorsun. Sıkıntıyı çözdüm.

    Misal olarak kategori adı PHP olsun.

    category.php'de

    $sef = $_GET["sef"];
    echo $sef;
    
    #Ekran çıktısı php/ oluyor..
    #sorgu içerisindede "php/" diye birşey bulmuyor.
    #veritabanında sef kolonumda php diye kayıtlı..
    #ne yapmalıyım ?
    Edit : SORUNU ÇÖZDÜM.

    ÇÖZÜM YOLUM:
    $sef 	  = mysql_real_escape_string(strip_tags($_GET["sef"]));
    $yenisef  = rtrim($sef,"/");  #son karakteri böyle temizledim.
  • 08-12-2012, 12:48:51
    #4
    RewriteRule ^kategori/(.*) category.php?sef=$1 [L]
    htaccess le uzun süredir çalışmadığımdan unutmuş olabilirim, belki bunun için özel bir nitelik olabilir.
    Ama dediğini çözmek için şöyle birşey yapabilirsin.

    RewriteRule ^kategori/(.*)/ category.php?sef=$1 [L]

    ya da ilk metodu kullanarak category.php dosyanda aşağıdaki gibi kullan.

    $sef = str_replace('/', '', $_GET["sef"]);

    ardından sorgu olacak
  • 08-12-2012, 12:50:58
    #5
    miscel adlı üyeden alıntı: mesajı görüntüle
    RewriteRule ^kategori/? category.php [NC,L]
    böyle olmalı:
    RewriteRule ^kategori/(.*) category.php?sef=$1 [L]
    miscel adlı üyeden alıntı: mesajı görüntüle
    RewriteRule ^kategori/(.*) category.php?sef=$1 [L]
    htaccess le uzun süredir çalışmadığımdan unutmuş olabilirim, belki bunun için özel bir nitelik olabilir.
    Ama dediğini çözmek için şöyle birşey yapabilirsin.

    RewriteRule ^kategori/(.*)/ category.php?sef=$1 [L]

    ya da ilk metodu kullanarak category.php dosyanda aşağıdaki gibi kullan.

    $sef = str_replace('/', '', $_GET["sef"]);

    ardından sorgu olacak
    Tekrar teşekkür ederim..

    RewriteRule ^kategori/(.*)/ category.php?sef=$1 [L]
    Bu işi çözüyor..