• 10-04-2015, 15:13:51
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhaba,

    Sitemap oluşturabilmek için aşağıdaki kodları hazırladım. ancak harita dizini (urlset) vermeye çalıştığımda hata alıyorum.

    <?php
    header("Content-type: text/xml");
    
    // DB Bağlantısı
    $host= "xxx";
    $user= "xxx";
    $pass= "xxx";
    $dbnm= "xxx";
    
    mysql_connect($host, $user, $pass) or die ("Sunucuya Bağlanılamadı");
    mysql_select_db($dbnm) or die ("Veritabanına bağlanılamadı");
    
    $sql = "SELECT *
    FROM Yazilar 
    ORDER BY id ASC";
    
    // XML Temel İşlemleri
    $belge= new DOMDocument("1.0", "UTF-8");
    
    $urlset = $belge->createElement("urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"");
    $belge->appendChild($urlset);
    
    // sorgu döngüsü
    $sorgu=mysql_query($sql);
    while($sonuc=mysql_fetch_array($sorgu)) {
    
    
    $alt=$belge->createElement("url");
    $urlset->appendChild($alt);
    	
    	$loc=$belge->createElement("loc");
    	$lastmod=$belge->createElement("lastmod");
    	$changefreq=$belge->createElement("changefreq");
    	$priority=$belge->createElement("priority");
    	
    	$alt->appendChild($loc);
    	$alt->appendChild($lastmod);
    	$alt->appendChild($changefreq);
    	$alt->appendChild($priority);
    	
    		$gelenveri1=$belge->createTextNode("http://xxx.com/?page=post&id=".$sonuc['id']);	// loc
    		$gelenveri2=$belge->createTextNode($sonuc['tarih']);											// lastmod
    		$gelenveri3=$belge->createTextNode("weekly");													// changefreq																							// kargo_suresi	
    		$gelenveri4=$belge->createTextNode("0.5");														// priority	
    		
    			$loc		->appendChild($gelenveri1);
    			$lastmod	->appendChild($gelenveri2);
    			$changefreq	->appendChild($gelenveri3);
    			$priority	->appendChild($gelenveri4);
    	
    }
    
    $xml_olustur = $belge->saveXML();
    echo $xml_olustur;
    
    mysql_close();
    ?>
    $urlset = $belge->createElement("urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9""); satırında çifttırnak içerisinde boşluksuz ve türkçe karaktersiz ne yazarsam sorun yok (urlset gibi) ama bu seferde webmasters tools hata veriyor. yukarıdaki gibi "urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" şeklinde yazarsam kod çalışmıyor şaştım kaldım
  • 10-04-2015, 15:39:20
    #2
    ob_start();
    session_start();
    require_once("ayar.php"); 
    echo '
    <?xml version="1.0" encoding="UTF-8"?>
    <urlset xmlns="http://www.google.com/schemas/sitemap/0.84" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84 http://www.google.com/schemas/sitemap/0.84/sitemap.xsd">
    ';
    echo '
    <url>
    <loc>'.$siteadresi.'</loc>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
    </url>
    ';
    
    $haber = mysql_query("select link from haberler");
    while($haberler = mysql_fetch_assoc($haber)) {
    echo '
    <url>
    <loc>'.$siteadresi.'/haber/'.$haberler['link'].'.html</loc>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
    </url>
     ';
     }
    
    echo '
    </urlset>
    ';
    Ben bu sekilde kullanıyorum. Sitemap.php olarak kaydedip htaccess ten xml olarak gosterebilirsin. Hiçbir yerde sorun cıkartmaz. İlla fiziksel olarak XML dosyası oluşturman şart değilse tabi.
  • 10-04-2015, 16:04:02
    #3
    Kimlik doğrulama veya yönetimden onay bekliyor.
    @oguzhan306; ters eğik çizgiyi (\) tırnakların (") önüne koyarak bu hatayı çözebileceğini düşünüyorum.
  • 10-04-2015, 17:04:26
    #4
    çözüldü teşekkürler