begin process at 2012 05 27 16:34:46
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Xml

 > GENERATEUR DE SITEMAP POUR GOOGLE

GENERATEUR DE SITEMAP POUR GOOGLE


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Xml Niveau :Débutant Date de création :16/06/2005 Date de mise à jour :09/01/2006 20:21:18 Vu :22 174

Auteur : Mumuri

Ecrire un message privé
Site perso
Commentaire sur cette source (20)
Ajouter un commentaire et/ou une note

 Description

Google a ouvert un nouveau service qui propose de générer une carte de votre site, dans cette carte se trouve les liens principaux de votre site, ainsi que leur date de modification. Cette outil vous aidera donc à mieux référencer votre site .Grâce à cette outil Google Sitemap Generator, vous serez à méme de générer vous même le fichier sitemap.xml nécéssaire à cette opération.




Source

  • <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  • <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"><head>
  • <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  • <meta name="generator" content="HAPedit 3.1" />
  • <style type="text/css">
  • body {
  • text-align: left;
  • background-color: #FFFFFF;
  • }
  • .center {
  • text-align: center;
  • }
  • .italic {
  • font-style: italic;
  • }
  • </style>
  • <title>Générateur de fichier sitemap</title>
  • </head>
  • <body id="haut">
  • <h2 class="center">Générateur de sitemap en xml</h2>
  • <p class="center">Copyright <a href="http://topflood.com" title="flood">Top flood</a><br />
  • Contributeurs : <br />
  • Kloh : <a href="http://timesplittersgames.free.fr" title="Le Site Web de Kloh">TimeSplitters' Games</a>; ImmortalPC :<a href="immortalpc.free.fr" title="Le site Web d'ImmortalPC">Immortal-PC</a>
  • </p>
  • <h2>Listages des urls autorisés pour le sitemap</h2>
  • <?php
  • //set_time_limit(60*10); pas forcément utile : fixe le temps d'exécution du script à 10 minutes (10*60 seconde)
  • define('LIMITLIENPARFICHIER',1000); // 1000 liens maximums dans chaque fichier
  • define('LIMITLIENINDEXE',50000); // 50 000 liens maximum au total
  • // générateur de fichiers sitemap.xml pour google
  • // 1- éditer les fichiers, extensions et dossiers interdits ainsi que leur mode de fonctionnement (0 par défaut) ( sans /)
  • // 2- éditez la variable $compressionGZ pour avoir ou non une compression sur vos fichiers (valable uniquement si vous avez plus de 1000 liens)
  • // 3- uploadez le fichier sur votre compte et lancez à partir d'un navigateur
  • /** note :
  • Si vous avez
  • ./image/
  • ./image/ete
  • ./image/hiver
  • alors si vous mettez "image" dans dossier interdit, tous les sous dossiers seront interdits
  • si vous mettez "hiver" alors le dossier hiver sera interdit
  • ne mettez pas "/image/hiver"
  • */
  • $racine= 'http://'.$_SERVER['HTTP_HOST'];
  • $compressionGZ = false; // false pas de compression true compression
  • $Goption=0;// option de filtrage (laissez 0 si vous ne comprenez pas)
  • // 0 - filtrage bit à bit (du type dossiercherche==dossierencour)
  • // 1 - présence d'une partie du mot dans le dossier
  • // 2 - filtrage par expressions réguliéres
  • $ExtensionsAutorises= array('php','php3','html','htm');
  • $DossiersInterdits = array('includes','modules','sessions','images','pnadodb','webanalyse','_flood','javascript','language','parameters','smileys','themes','_streifer');
  • $FichiersInterdits = array('config.php','config_i.php','streifer_forum.gif.php','xmlrpc.php','referer.php','config-old.php','test.php','admin.php','image.php','header.php','footer.php','error.php','confige.php','banners.php','pntables.php','print.php','mainfile.php','modules.php','backend.php');
  • $myfiles=GetDirContents('.');
  • /**
  • function Dossier_Autorisé
  • param : $DossierCourant
  • return : vrai si dossier autorisé faux sinon
  • */
  • function Dossier_Autorisé($DossierCourant){
  • global $DossiersInterdits;
  • return Est_Autorisé($DossierCourant, $DossiersInterdits);
  • }
  • /**
  • function Dossier_Autorisé
  • param : $DossierCourant
  • return : vrai si dossier autorisé faux sinon
  • */
  • function Fichier_Autorisé($FichierCourant){
  • global $FichiersInterdits;
  • return Est_Autorisé($FichierCourant, $FichiersInterdits);
  • }
  • /**
  • function Extension_Autorisé
  • */
  • function Extension_Autorisé($ExtensionCourante){
  • global $ExtensionsAutorises;
  • return !Est_Autorisé($ExtensionCourante,$ExtensionsAutorises);
  • }
  • /**
  • permet de réaliser les deux fonctions précédentes
  • */
  • function Est_Autorisé($DossierCourant,$Interdits){
  • global $Goption;
  • $drapeau = true;
  • while ($drapeau && list(,$Dossier)=each($Interdits) ){
  • if ( ComparaisonFichier($DossierCourant,$Dossier,$Goption))$drapeau = false;
  • }
  • reset($Interdits);
  • return $drapeau;
  • }
  • function ComparaisonFichier($DossierCourant,$Dossier,$option=0){
  • switch ($option){
  • case 0:
  • // faire une comparaison bit à bit
  • return ($DossierCourant == $Dossier);
  • break;
  • case 1:
  • // faire un filtre avec strpos
  • $pos = strpos($mystring, $findme);
  • if ($pos === false) {
  • return false;
  • } else {
  • return true;
  • }
  • break;
  • case 2:
  • // faire un filtre avec les expressions réguliéres
  • return ereg($Dossier,$DossierCourant);
  • break;
  • }
  • }
  • /**
  • fonction getextension : retourne l'extension d'un fichier
  • source : nexen.net
  • param : $fichier
  • return: extension du fichier
  • */
  • function getextension($fichier){
  • $bouts = explode('.', $fichier);
  • return array_pop($bouts);
  • }
  • /**
  • fonction GetDirContents
  • param : $dir dossier racine (le test est récursif)
  • return : liste des urlsDossier_Autorisé
  • */
  • function GetDirContents($dir){
  • global $racine;
  • $i=0;
  • ini_set('max_execution_time',10);
  • if (!is_dir($dir)){die ('PROBLEME: '.$dir.'!');}
  • if ($root=@opendir($dir)){
  • while ($file=readdir($root)){
  • if($file=='.' || $file=='..'){continue;}
  • if(is_dir($dir.'/'.$file) && Dossier_Autorisé($file)){
  • if(!IsSet($files)){$files = NULL;}
  • $files=array_merge($files,GetDirContents($dir.'/'.$file));
  • }else{
  • $extension=getextension($file);
  • if (Extension_Autorisé($extension) && Fichier_Autorisé($file)){
  • echo '<strong>',$dir,'</strong>/',htmlentities($file),'<br />',"\r\n";
  • $files[$i]['lien']=utf8_encode($racine.substr($dir,1).'/'.$file);
  • // rajout de la date
  • // source : http://www.orvinfait.fr/scripts_web_performant.html
  • $modi_fich=filemtime($dir.'/'.$file);
  • $files[$i]['date']=date('Y-m-d', $modi_fich);
  • $i++;
  • }
  • }
  • }
  • }
  • if(!IsSet($files)){$files = NULL;}
  • return $files;
  • }
  • $nbliens=count($myfiles);
  • echo '<span class="italic">'.$nbliens.' liens référencés dans les fichiers.</span><br />',"\r\n";
  • if ($nbliens>LIMITLIENPARFICHIER){
  • // utilisation de la norme pour les sites souhaitant référencés plus de 1000 liens
  • // un fichier sitemap à générer en plus
  • $numfichier=1;
  • echo '<h2>Génération des fichiers sitemapXX.xml...</h2>',"\r\n";
  • }else {
  • $numfichier='';
  • echo '<h2>Génération du fichier sitemap.xml...</h2>',"\r\n";
  • }
  • if ($compressionGZ)
  • {
  • //http://docs.php.net/en/ref.zlib.html
  • $open='gzopen';
  • $write='gzwrite';
  • $close='gzclose';
  • $GZ='.gz';
  • } else
  • {
  • $open='fopen';
  • $write='fwrite';
  • $close='fclose';
  • $GZ='';
  • }
  • $CurLiens=0;
  • while ($CurLiens<$nbliens && $CurLiens<LIMITLIENINDEXE )
  • {
  • if ($fp = $open('sitemap'.$numfichier.'.xml'.$GZ, 'w')){
  • $write($fp,'<?xml version="1.0" encoding="UTF-8"?>'."\r\n");
  • $write($fp,'<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">'."\r\n");
  • $Limite = $CurLiens + LIMITLIENPARFICHIER; // si lien courant vaut 20000 dés qu'on arrive à 21000 on arrete
  • while ($CurLiens< $Limite && $CurLiens<LIMITLIENINDEXE && list(,$file)=each($myfiles))
  • {
  • $write($fp,'<url> '."\r\n".' <loc>'.$file['lien'].'</loc> '."\r\n \r\n");
  • $write($fp,"\t\t".'<lastmod>'.$file['date'].'</lastmod>'."\n");
  • $write($fp,'<changefreq>monthly</changefreq>');
  • $write($fp,'<priority>0.5</priority></url>');
  • $CurLiens ++;
  • }
  • $write($fp, '</urlset>');
  • $close($fp);
  • echo '<a href="./sitemap'.$numfichier.'.xml'.$GZ.'" target="_blank">fichier sitemap'.$numfichier.'.xml'.$GZ.'</a><br />',"\r\n";
  • }else{
  • echo 'sitemap'.$numfichier.'.xml',"\r\n"
  • ,'<br /><br /><textarea rows="30" cols="100">',"\r\n"
  • ,'<?xml version="1.0" encoding="UTF-8"?>',"\r\n"
  • ,'<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">',"\r\n";
  • $Limite = $CurLiens + LIMITLIENPARFICHIER;
  • while ($CurLiens< $Limite && $CurLiens<LIMITLIENINDEXE && list(,$file)=each($myfiles))
  • {
  • echo '<url> '."\r\n".' <loc>'.$file['lien'].'</loc> '."\r\n ";
  • echo '<lastmod>'.$file['date'].'</lastmod>'."\r\n";
  • echo '<changefreq>monthly</changefreq>'."\r\n";
  • echo '<priority>0.5</priority></url>'."\r\n";
  • $CurLiens ++;
  • }
  • echo '</urlset></textarea><br />';
  • }
  • $numfichier++;
  • }
  • if ($numfichier!=1)
  • {
  • echo '<h2>Génération du fichier sitemap index file.xml...</h2>';
  • // génération du sitemap index file
  • if ($fp = fopen('sitemap.xml', 'w+')){
  • fwrite($fp, '<?xml version="1.0" encoding="UTF-8"?>'."\r\n");
  • fwrite($fp, '<sitemapindex xmlns="http://www.google.com/schemas/sitemap/0.84">'."\r\n");
  • $date=date('Y-m-d');
  • for($k=1;$k<$numfichier;$k++)
  • {
  • fwrite($fp, '<sitemap>'."\r\n");
  • fwrite($fp,'<loc>'.$racine.'/sitemap'.$k.'.xml'.$GZ.'</loc>'."\r\n");
  • fwrite($fp, '<lastmod>'.$date.'</lastmod>'."\r\n");
  • fwrite($fp,'</sitemap>'."\r\n");
  • }
  • fwrite($fp, '</sitemapindex>'."\r\n");
  • fclose($fp);
  • echo '<a href="./sitemap.xml" target="_blank">fichier sitemap.xml</a><br />',"\r\n";
  • } else
  • {
  • echo '<br /><br /><textarea rows="30" cols="100">',"\r\n"
  • ,'<?xml version="1.0" encoding="UTF-8"?>',"\r\n"
  • ,'<sitemapindex xmlns="http://www.google.com/schemas/sitemap/0.84">',"\r\n";
  • $date=date("Y-m-d");
  • for($k=1;$k<$numfichier;$k++)
  • {
  • echo '<sitemap>',"\r\n"
  • ,'<loc>',$racine,'/sitemap',$k,'.xml</loc>',"\r\n"
  • ,'<lastmod>',$date,'</lastmod>',"\r\n"
  • ,'</sitemap>',"\r\n";
  • }
  • echo '</sitemapindex>',"\r\n";
  • }
  • }
  • ?>
  • <span class="italic">génération du sitemap terminé</span>
  • <p class="center"><a href="#haut" title="Retourner en Haut de la page">Haut de la page</a></p>
  • </body>
  • </html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"><head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="generator" content="HAPedit 3.1" />
<style type="text/css">
body {
    text-align: left;
    background-color: #FFFFFF;
}

.center {
    text-align: center;
}

.italic  {
    font-style: italic;
}
</style>
<title>Générateur de fichier sitemap</title>

</head>
<body id="haut">
<h2 class="center">Générateur de sitemap en xml</h2>
<p class="center">Copyright <a href="http://topflood.com" title="flood">Top flood</a><br />
Contributeurs : <br />
Kloh : <a href="http://timesplittersgames.free.fr" title="Le Site Web de Kloh">TimeSplitters' Games</a>; ImmortalPC :<a href="immortalpc.free.fr" title="Le site Web d'ImmortalPC">Immortal-PC</a>
</p>

<h2>Listages des urls autorisés pour le sitemap</h2>

<?php
//set_time_limit(60*10); pas forcément utile : fixe le temps d'exécution du script à 10 minutes (10*60 seconde)

define('LIMITLIENPARFICHIER',1000); // 1000 liens maximums dans chaque fichier
define('LIMITLIENINDEXE',50000); // 50 000 liens maximum au total

// générateur de fichiers sitemap.xml pour google
// 1- éditer les fichiers, extensions et dossiers interdits ainsi que leur mode de fonctionnement (0 par défaut) ( sans /)
// 2- éditez la variable $compressionGZ pour avoir ou non une compression sur vos fichiers (valable uniquement si vous avez plus de 1000 liens)
// 3- uploadez le fichier sur votre compte et lancez à partir d'un navigateur

/** note :

Si vous avez
./image/
./image/ete
./image/hiver

alors si vous mettez "image" dans dossier interdit, tous les sous dossiers seront interdits
si vous mettez "hiver" alors le dossier hiver sera interdit
ne mettez pas "/image/hiver"
*/

$racine= 'http://'.$_SERVER['HTTP_HOST'];
$compressionGZ = false; // false pas de compression true compression
$Goption=0;// option de filtrage (laissez 0 si vous ne comprenez pas)
// 0 - filtrage bit à bit (du type dossiercherche==dossierencour)
// 1 - présence d'une partie du mot dans le dossier
// 2 - filtrage par expressions réguliéres
$ExtensionsAutorises= array('php','php3','html','htm');
$DossiersInterdits = array('includes','modules','sessions','images','pnadodb','webanalyse','_flood','javascript','language','parameters','smileys','themes','_streifer');
$FichiersInterdits = array('config.php','config_i.php','streifer_forum.gif.php','xmlrpc.php','referer.php','config-old.php','test.php','admin.php','image.php','header.php','footer.php','error.php','confige.php','banners.php','pntables.php','print.php','mainfile.php','modules.php','backend.php');

$myfiles=GetDirContents('.');

/**
function Dossier_Autorisé
param : $DossierCourant
return : vrai si dossier autorisé faux sinon
*/

function Dossier_Autorisé($DossierCourant){
    global $DossiersInterdits;
    return Est_Autorisé($DossierCourant, $DossiersInterdits);
}

/**
function Dossier_Autorisé
param : $DossierCourant
return : vrai si dossier autorisé faux sinon
*/

function Fichier_Autorisé($FichierCourant){
    global $FichiersInterdits;
    return Est_Autorisé($FichierCourant, $FichiersInterdits);
}

/**
function Extension_Autorisé

*/
function Extension_Autorisé($ExtensionCourante){
    global $ExtensionsAutorises;
    return !Est_Autorisé($ExtensionCourante,$ExtensionsAutorises);
}

/**
permet de réaliser les deux fonctions précédentes
*/
function Est_Autorisé($DossierCourant,$Interdits){
    global $Goption;

    $drapeau = true;
    while ($drapeau && list(,$Dossier)=each($Interdits) ){
        if ( ComparaisonFichier($DossierCourant,$Dossier,$Goption))$drapeau = false;
    }
    reset($Interdits);
    return $drapeau;
}

function ComparaisonFichier($DossierCourant,$Dossier,$option=0){
    switch ($option){
        case 0:
            // faire une comparaison bit à bit
            return ($DossierCourant == $Dossier);
        break;
            
        case 1:
            // faire un filtre avec strpos
            $pos = strpos($mystring, $findme);
            if ($pos === false) {
                return false;
            } else {
                return true;
            }
        break;
            
        case 2:
            // faire un filtre avec les expressions réguliéres
            return ereg($Dossier,$DossierCourant);
        break;
    }
}
/**
fonction getextension : retourne l'extension d'un fichier
source : nexen.net
param : $fichier
return: extension du fichier
*/
function getextension($fichier){
    $bouts = explode('.', $fichier);
    return array_pop($bouts);
}


/**
fonction GetDirContents
param : $dir dossier racine (le test est récursif)
return : liste des urlsDossier_Autorisé
*/
function GetDirContents($dir){
    global $racine;
    $i=0;
    ini_set('max_execution_time',10);
    if (!is_dir($dir)){die ('PROBLEME: '.$dir.'!');}


    if ($root=@opendir($dir)){
        while ($file=readdir($root)){
            if($file=='.' || $file=='..'){continue;}
            if(is_dir($dir.'/'.$file) && Dossier_Autorisé($file)){

                if(!IsSet($files)){$files = NULL;}
                $files=array_merge($files,GetDirContents($dir.'/'.$file));

            }else{

                $extension=getextension($file);

                if (Extension_Autorisé($extension) && Fichier_Autorisé($file)){
                    echo '<strong>',$dir,'</strong>/',htmlentities($file),'<br />',"\r\n";
                    $files[$i]['lien']=utf8_encode($racine.substr($dir,1).'/'.$file);

                    // rajout de la date
                    // source : http://www.orvinfait.fr/scripts_web_performant.html
                    $modi_fich=filemtime($dir.'/'.$file);
                    $files[$i]['date']=date('Y-m-d', $modi_fich);
                    $i++;
                }
            }
        }
    }
    if(!IsSet($files)){$files = NULL;}
    return $files;
}




$nbliens=count($myfiles);
echo '<span class="italic">'.$nbliens.' liens référencés dans les fichiers.</span><br />',"\r\n";

if ($nbliens>LIMITLIENPARFICHIER){
    // utilisation de la norme pour les sites souhaitant référencés plus de 1000 liens
    // un fichier sitemap à générer en plus
    $numfichier=1;
    echo '<h2>Génération des fichiers sitemapXX.xml...</h2>',"\r\n";
}else {
    $numfichier='';
    echo '<h2>Génération du fichier sitemap.xml...</h2>',"\r\n";
}

if ($compressionGZ)
{
    //http://docs.php.net/en/ref.zlib.html
    $open='gzopen';
    $write='gzwrite';
    $close='gzclose';
    $GZ='.gz';
} else
{
    $open='fopen';
    $write='fwrite';
    $close='fclose';
    $GZ='';
}

$CurLiens=0;
while ($CurLiens<$nbliens && $CurLiens<LIMITLIENINDEXE )
{
    if ($fp = $open('sitemap'.$numfichier.'.xml'.$GZ, 'w')){
        $write($fp,'<?xml version="1.0" encoding="UTF-8"?>'."\r\n");
        $write($fp,'<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">'."\r\n");
        $Limite = $CurLiens + LIMITLIENPARFICHIER; // si lien courant vaut 20000 dés qu'on arrive à 21000 on arrete

        while ($CurLiens< $Limite && $CurLiens<LIMITLIENINDEXE && list(,$file)=each($myfiles))
        {
            $write($fp,'<url> '."\r\n".' <loc>'.$file['lien'].'</loc> '."\r\n \r\n");
            $write($fp,"\t\t".'<lastmod>'.$file['date'].'</lastmod>'."\n");
            $write($fp,'<changefreq>monthly</changefreq>');
            $write($fp,'<priority>0.5</priority></url>');
            $CurLiens ++;
        }
        $write($fp, '</urlset>');
        $close($fp);
        echo '<a href="./sitemap'.$numfichier.'.xml'.$GZ.'" target="_blank">fichier sitemap'.$numfichier.'.xml'.$GZ.'</a><br />',"\r\n";
    }else{

        echo 'sitemap'.$numfichier.'.xml',"\r\n"
        ,'<br /><br /><textarea rows="30" cols="100">',"\r\n"
        ,'<?xml version="1.0" encoding="UTF-8"?>',"\r\n"
        ,'<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">',"\r\n";

     $Limite = $CurLiens + LIMITLIENPARFICHIER;
    while ($CurLiens< $Limite  && $CurLiens<LIMITLIENINDEXE && list(,$file)=each($myfiles))
    {
        echo '<url> '."\r\n".' <loc>'.$file['lien'].'</loc> '."\r\n ";
        echo '<lastmod>'.$file['date'].'</lastmod>'."\r\n";
        echo '<changefreq>monthly</changefreq>'."\r\n";
        echo '<priority>0.5</priority></url>'."\r\n";
        $CurLiens ++; 
    }
    echo  '</urlset></textarea><br />';

 }
 $numfichier++;
}

if ($numfichier!=1)
{
    echo '<h2>Génération du fichier sitemap index file.xml...</h2>';
    // génération du sitemap index file
    if ($fp = fopen('sitemap.xml', 'w+')){

        fwrite($fp, '<?xml version="1.0" encoding="UTF-8"?>'."\r\n");
        fwrite($fp, '<sitemapindex xmlns="http://www.google.com/schemas/sitemap/0.84">'."\r\n");
        $date=date('Y-m-d');

        for($k=1;$k<$numfichier;$k++)
        {
            fwrite($fp, '<sitemap>'."\r\n");
            fwrite($fp,'<loc>'.$racine.'/sitemap'.$k.'.xml'.$GZ.'</loc>'."\r\n");
            fwrite($fp, '<lastmod>'.$date.'</lastmod>'."\r\n");
            fwrite($fp,'</sitemap>'."\r\n");

        }
        fwrite($fp, '</sitemapindex>'."\r\n");
        fclose($fp);
        echo '<a href="./sitemap.xml" target="_blank">fichier sitemap.xml</a><br />',"\r\n";

    } else
    {
        echo '<br /><br /><textarea rows="30" cols="100">',"\r\n"
        ,'<?xml version="1.0" encoding="UTF-8"?>',"\r\n"
        ,'<sitemapindex xmlns="http://www.google.com/schemas/sitemap/0.84">',"\r\n";
        $date=date("Y-m-d");
        for($k=1;$k<$numfichier;$k++)
        {
        echo '<sitemap>',"\r\n"
        ,'<loc>',$racine,'/sitemap',$k,'.xml</loc>',"\r\n"
        ,'<lastmod>',$date,'</lastmod>',"\r\n"
        ,'</sitemap>',"\r\n";
        }
        echo '</sitemapindex>',"\r\n";

    }
}
?>
<span class="italic">génération du sitemap terminé</span>
<p class="center"><a href="#haut" title="Retourner en Haut de la page">Haut de la page</a></p>
</body>

</html>

 Conclusion

utilisation
---------------
1- Editez $compressionGZ si vous voulez compresser vos fichiers sitemaps
2- Editez les variables $DossiersInterdits, $ExtensionsAutorisés et $FichiersInterdits pour exclure les fichiers à ne pas référencer
3- Editez $Goption si nécéssaire (pour pouvoir utiliser les expressions réguliéres par exemple)
4- Uploadez le fichier à la racine de votre compte
5- Lancez le , ca y'est votre site map est généré
6- (facultatif) vous pouvez soumettre votre lien à Google

Liens connexes
---------------
La derniére version de ce générateur se trouvera ici
http://topflood.free.fr/generateur_de_sitemap. html
http://topflood.free.fr/test.php

Plus d'explications sur les sites maps
http://www.webrankinfo.com/actualites/200506- sitemaps.htm

On en discute ici
http://www.webrankinfo.com/forums/viewtopic_29 844.htm

Liens officiels sur google + soumission de votre sitemap
https://www.google.com/webmasters/sitemaps /stats

Utilisation pour des sites statiques sans Php
----------------------------------------------
Vous n'avez pas php sur votre serveur, mais vous voulez quand méme générer un sitemap. C'est possible, il suffit juste de faire un miroir de votre site en local, d'installer easyphp et d'éditer la variable $racine à remplacer par la racine de votre site web.Ensuite lancez le script et uploadez le sitemap sur votre site web.

Perspective
--------------

- rajouter un gestionnaire permettant  l'édition des priorités voir méme l'édition des fichiers interdits
- faire un gestion par onglet à base de DIV (onglet1 listes des fichiers, onglet2 code xml, onglet 3 paramétrage)
- faire un parser Xml pour vérifier la validité du fichier généré
liens : http://tecfa.unige.ch/guides/tie/html/php-xml/php- xml-4.html
        http://fr3.php.net/xml

/!\ Ce script ne gére pas l'url rewriting et ne peut pas le gérer dans sa forme actuelle. essayer plutot ce genre d'outils dans ces cas là
http://www.blocklayer.com/googlesitemap/


 Historique

16 juin 2005 13:46:33 :
rajout du lien de test
17 juin 2005 09:47:53 :
meilleur filtrages des extensions gestion d'erreurs pour le fopen
17 juin 2005 11:29:22 :
une balise html était mal placé
17 juin 2005 11:44:08 :
rajout des modifications de immortalPC (cf commentaire ci dessous)
17 juin 2005 11:49:50 :
contributeur prend un 's'
17 juin 2005 11:53:04 :
j'ai éssayé de limité la casse avec le parser de phpcs
17 juin 2005 16:09:32 :
- compression au format GZ - gestion des limites imposés par google - génération plusieurs fichiers sitemap1.xml sitemap2.xml ... et création un fichier sitemap index - options de filtrages avancées (expressions réguliéres par exemple, comparaison sur du strpos )
17 juin 2005 16:10:18 :
- compression au format GZ - gestion des limites imposées par google - génération plusieurs fichiers sitemap1.xml sitemap2.xml ... et création un fichier sitemap index - options de filtrages avancées (expressions réguliéres par exemple, comparaison sur du strpos )
17 juin 2005 16:30:38 :
une perspective en plus (un parser pour vérifier les fichiers)
17 juin 2005 19:14:40 :
fin de mise a jour sur la deuxiéme partie du code (affichage dans des textareas
17 juin 2005 19:53:26 :
rajout des autres modifications de ImmortalPC
06 septembre 2005 15:40:39 :
utilisation du script pour des sites statiques quand on a pas php
09 janvier 2006 20:21:18 :
Mise à jour de l'url de mon site web

 Sources du même auteur

Source avec Zip EFFACER UNE LIGNE D'UN FICHIER SANS LIRE TOUT LE FICHIER ...
Source avec Zip Source avec une capture FAVORISWEB
RENDRE LA SOURCE DE SON SITE PHP PLUS CLAIR ...

 Sources de la même categorie

Source avec Zip JEU FRISE CHRONOLOGIQUE EN XML par mldvb
OBTENIR LES TAUX DE CHANGE DU JOUR EN EUROS par oallais
Source avec Zip AFFICHER LES FILM EN SALLE par slhuilli
Source avec Zip Source avec une capture MINI-PROCESSEUR XPROC (PIPELINE XML) par ordiman85
Source avec Zip Source avec une capture XML MAPPING TO CLASS OBJECTS / CHARGEMENT / PARSING / MODIFI... par aKheNathOn

Commentaires et avis

Commentaire de ImmortalPC le 17/06/2005 10:56:06

Salut,
Super bien pensée !!!
3 trucs pour l'améliorer :
1) mets $racine= 'http://'.$_SERVER['HTTP_HOST'];
Pas besoin de paramétrer comme ça
2) utilise les ' et pas les "
3) <? deviens <?php

9/10
@+

Commentaire de ImmortalPC le 17/06/2005 11:18:23

Re,
en regardant bien le code j'ai trouvé d'autres érreur :
<?='toto'?>
Pas bien du tout ça éxiste mais utilise ça que sur ton serveur.

LE XHTML !!!!!!

et si un fichier est nommé: classé
ça mettra classé dans le xml et ça fait une érreur.

Pour la dernière érreur je sais pas comment faire mais pour le reste c'est réglé :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta name="generator" content="HAPedit 3.1">
<title>Générateur de fichier sitemap</title>
</head>
<body bgcolor="#FFFFFF">
<h2>Génération du fichier sitemap.xml...</h2>

<center>Copyright <a href=http://topflood.free.fr>Top flood</a><br>
Contributeur : Kloh : <a href=http://timesplittersgames.free.fr>timesplittersgames</a><br>
</center>
<?php
// générateur de fichiers sitemap.xml pour google
// 1- éditer $racine
// 2- éditer les fichiers, extensions et dossiers interdits ( sans /)
// 3- uploadez le fichier sur votre compte et lancez à partir d'un navigateur

/** note :

Si vous avez
./image/
./image/ete
./image/hiver

alors si vous mettez "image" dans dossier interdit, tous les sous dossiers seront interdits
si vous mettez "hiver" alors le dossier hiver sera interdit
ne mettez pas "/image/hiver"
*/

$racine= 'http://'.$_SERVER['HTTP_HOST'];
$ExtensionsAutorises= array('php','php3','html','htm');
$DossiersInterdits = array('includes','modules','sessions','images','pnadodb','webanalyse','_flood','javascript','language','parameters','smileys','themes','_streifer');
$FichiersInterdits = array('config.php','config_i.php','streifer_forum.gif.php','xmlrpc.php','referer.php','config-old.php','test.php','admin.php','image.php','header.php','footer.php','error.php','confige.php','banners.php','pntables.php','print.php','mainfile.php','modules.php','backend.php');

$myfiles=GetDirContents('.');

/**
function Dossier_Autorisé
param : $DossierCourant
return : vrai si dossier autorisé faux sinon
*/

function Dossier_Autorisé($DossierCourant){
    global $DossiersInterdits;
    return Est_Autorisé($DossierCourant, $DossiersInterdits);
}

/**
function Dossier_Autorisé
param : $DossierCourant
return : vrai si dossier autorisé faux sinon
*/

function Fichier_Autorisé($FichierCourant){
    global $FichiersInterdits;
    return Est_Autorisé($FichierCourant, $FichiersInterdits);
}

/**
function Extension_Autorisé

*/
function Extension_Autorisé($ExtensionCourante){
    global $ExtensionsAutorises;
    return !Est_Autorisé($ExtensionCourante,$ExtensionsAutorises);
}

/**
permet de réaliser les deux fonctions précédentes
*/
function Est_Autorisé($DossierCourant,$Interdits){
    $drapeau = true;
    while ($drapeau && list(,$Dossier)=each($Interdits) ){
        if ($DossierCourant == $Dossier)$drapeau = false;
    }
    reset($Interdits);
    return $drapeau;
}

/**
fonction getextension : retourne l'extension d'un fichier
source : nexen.net
param : $fichier
return: extension du fichier
*/
function getextension($fichier){
    $bouts = explode('.', $fichier);
    return array_pop($bouts);
}


/**
fonction GetDirContents
param : $dir dossier racine (le test est récursif)
return : liste des urlsDossier_Autorisé
*/
function GetDirContents($dir){
    global $racine;
    $i=0;
    ini_set('max_execution_time',10);
    if (!is_dir($dir)){die ('PROBLEME: '.$dir.'!');}


    if ($root=@opendir($dir)){
        while ($file=readdir($root)){
            if($file=='.' || $file=='..'){continue;}
            if(is_dir($dir.'/'.$file) && Dossier_Autorisé($file)){

                if(!IsSet($files)){$files = NULL;}
                $files=array_merge($files,GetDirContents($dir.'/'.$file));

            }else{

                $extension=getextension($file);

                if (Extension_Autorisé($extension) && Fichier_Autorisé($file)){
                    echo '<strong>',$dir,'</strong>/',$file,'<br />';
                    $files[$i]['lien']=$racine.substr($dir,1).'/'.$file;

                    // rajout de la date
                    // source : http://www.orvinfait.fr/scripts_web_performant.html
                    $modi_fich=filemtime($dir.'/'.$file);
                    $files[$i]['date']=date('Y-m-d', $modi_fich);
                    $i++;
                }
            }
        }
    }
    if(!IsSet($files)){$files = NULL;}
    return $files;
}

if ($fp = fopen('sitemap.xml', 'w+')){
    fwrite($fp,'<?xml version="1.0" encoding="UTF-8"?>'."\r\n");
    fwrite($fp,'<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">'."\r\n");

    foreach($myfiles as $file){
        fwrite($fp,'<url> '."\r\n".' <loc>'.$file['lien'].'</loc> '."\r\n \r\n");
        fwrite($fp,"\t\t".'<lastmod>'.$file['date'].'</lastmod>'."\n\t".'</url>'."\n");
        fwrite($fp,'<changefreq>monthly</changefreq>');
        fwrite($fp,'<priority>0.5</priority>');
    }
    fwrite($fp, '</urlset>');
    fclose($fp);
    echo '<a href="./sitemap.xml" target="_blank">fichiers sitemap.xml</a><br />';
}else{

    echo '<br /><br /><textarea rows="30" cols="100">';
    ,'<?xml version="1.0" encoding="UTF-8"?>',"\r\n";
?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
<?php
    foreach($myfiles as $file){
?>
<url>
<loc><?php echo $file['lien']; ?></loc>
<lastmod><?php echo $file['date']; ?></lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<?php
    }
?>
</urlset></textarea>
<br />
<?php
}
?>
<i>génération du sitemap terminé</i>
</body>

</html>

@+

Commentaire de Mumuri le 17/06/2005 11:35:45

merci j'édite çà
une petite question

pour le fichier classé, est un fichier spécifique à bannir automatiquement ( à ce moment là, il suffit de le rajouté dans les fichiers interdits)
est ce que c'est plutot un probléme liée au extensions, a ce moment la il suffit d'interdire les fichiers sans extension.

Commentaire de ImmortalPC le 17/06/2005 12:04:52

non
s'était un exemple comme un autre.
exemple : classé.php
et là il ya bug xml.
@+

Commentaire de Mumuri le 17/06/2005 13:07:19

il faut donc rajouter une fonction de filtrage pour avoir class%C3%A9 .php
ca doit exister en tout fait çà;)

Commentaire de Mumuri le 17/06/2005 13:55:54

peut etre une piste
http://fr.php.net/manual/fr/function.utf8-encode.php

Commentaire de ImmortalPC le 17/06/2005 18:07:22

Re,
Nikel voilà ce que ça donne :
Donc mets pour le xml utf8_encode($file['lien'])
Et pour l'affichage des fichiers scannés htmlentities($file)
@+

Commentaire de ImmortalPC le 17/06/2005 19:10:47

Re,
j'ai XHTMLisé et CSSisé le tout
et enlevé des fautes (;)
Et enlevé les echo en trop et remplacé les . dans les echo par des ,

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"><head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="generator" content="HAPedit 3.1" />
<style type="text/css">
body {
    text-align: left;
    background-color: #FFFFFF;
}

.center {
    text-align: center;
}

.italic  {
    font-style: italic;
}
</style>
<title>Générateur de fichier sitemap</title>

</head>
<body id="haut">
<h2 class="center">Générateur de sitemap en xml</h2>
<p class="center">Copyright <a href="http://topflood.free.fr" title="Le site Web de l'auteur">Top flood</a><br />
Contributeurs : <br />
Kloh : <a href="http://timesplittersgames.free.fr" title="Le Site Web de Kloh">TimeSplitters' Games</a>; ImmortalPC :<a href="immortalpc.free.fr" title="Le site Web d'ImmortalPC">Immortal-PC</a>
</p>

<h2>Listages des urls autorisés pour le sitemap</h2>

<?php
//set_time_limit(60*10); pas forcément utile : fixe le temps d'exécution du script à 10 minutes (10*60 seconde)

define('LIMITLIENPARFICHIER',1000); // 1000 liens maximums dans chaque fichier
define('LIMITLIENINDEXE',50000); // 50 000 liens maximum au total

// générateur de fichiers sitemap.xml pour google
// 1- éditer les fichiers, extensions et dossiers interdits ainsi que leur mode de fonctionnement (0 par défaut) ( sans /)
// 2- éditez la variable $compressionGZ pour avoir ou non une compression sur vos fichiers (valable uniquement si vous avez plus de 1000 liens)
// 3- uploadez le fichier sur votre compte et lancez à partir d'un navigateur

/** note :

Si vous avez
./image/
./image/ete
./image/hiver

alors si vous mettez "image" dans dossier interdit, tous les sous dossiers seront interdits
si vous mettez "hiver" alors le dossier hiver sera interdit
ne mettez pas "/image/hiver"
*/

$racine= 'http://'.$_SERVER['HTTP_HOST'];
$compressionGZ = false; // false pas de compression true compression
$Goption=0;// option de filtrage (laissez 0 si vous ne comprenez pas)
// 0 - filtrage bit à bit (du type dossiercherche==dossierencour)
// 1 - présence d'une partie du mot dans le dossier
// 2 - filtrage par expressions réguliéres
$ExtensionsAutorises= array('php','php3','html','htm');
$DossiersInterdits = array('includes','modules','sessions','images','pnadodb','webanalyse','_flood','javascript','language','parameters','smileys','themes','_streifer');
$FichiersInterdits = array('config.php','config_i.php','streifer_forum.gif.php','xmlrpc.php','referer.php','config-old.php','test.php','admin.php','image.php','header.php','footer.php','error.php','confige.php','banners.php','pntables.php','print.php','mainfile.php','modules.php','backend.php');

$myfiles=GetDirContents('.');

/**
function Dossier_Autorisé
param : $DossierCourant
return : vrai si dossier autorisé faux sinon
*/

function Dossier_Autorisé($DossierCourant){
    global $DossiersInterdits;
    return Est_Autorisé($DossierCourant, $DossiersInterdits);
}

/**
function Dossier_Autorisé
param : $DossierCourant
return : vrai si dossier autorisé faux sinon
*/

function Fichier_Autorisé($FichierCourant){
    global $FichiersInterdits;
    return Est_Autorisé($FichierCourant, $FichiersInterdits);
}

/**
function Extension_Autorisé

*/
function Extension_Autorisé($ExtensionCourante){
    global $ExtensionsAutorises;
    return !Est_Autorisé($ExtensionCourante,$ExtensionsAutorises);
}

/**
permet de réaliser les deux fonctions précédentes
*/
function Est_Autorisé($DossierCourant,$Interdits){
    global $Goption;

    $drapeau = true;
    while ($drapeau && list(,$Dossier)=each($Interdits) ){
        if ( ComparaisonFichier($DossierCourant,$Dossier,$Goption))$drapeau = false;
    }
    reset($Interdits);
    return $drapeau;
}

function ComparaisonFichier($DossierCourant,$Dossier,$option=0){
    switch ($option){
        case 0:
            // faire une comparaison bit à bit
            return ($DossierCourant == $Dossier);
        break;
            
        case 1:
            // faire un filtre avec strpos
            $pos = strpos($mystring, $findme);
            if ($pos === false) {
                return false;
            } else {
                return true;
            }
        break;
            
        case 2:
            // faire un filtre avec les expressions réguliéres
            return ereg($Dossier,$DossierCourant);
        break;
    }
}
/**
fonction getextension : retourne l'extension d'un fichier
source : nexen.net
param : $fichier
return: extension du fichier
*/
function getextension($fichier){
    $bouts = explode('.', $fichier);
    return array_pop($bouts);
}


/**
fonction GetDirContents
param : $dir dossier racine (le test est récursif)
return : liste des urlsDossier_Autorisé
*/
function GetDirContents($dir){
    global $racine;
    $i=0;
    ini_set('max_execution_time',10);
    if (!is_dir($dir)){die ('PROBLEME: '.$dir.'!');}


    if ($root=@opendir($dir)){
        while ($file=readdir($root)){
            if($file=='.' || $file=='..'){continue;}
            if(is_dir($dir.'/'.$file) && Dossier_Autorisé($file)){

                if(!IsSet($files)){$files = NULL;}
                $files=array_merge($files,GetDirContents($dir.'/'.$file));

            }else{

                $extension=getextension($file);

                if (Extension_Autorisé($extension) && Fichier_Autorisé($file)){
                    echo '<strong>',$dir,'</strong>/',htmlentities($file),'<br />',"\r\n";
                    $files[$i]['lien']=utf8_encode($racine.substr($dir,1).'/'.$file);

                    // rajout de la date
                    // source : http://www.orvinfait.fr/scripts_web_performant.html
                    $modi_fich=filemtime($dir.'/'.$file);
                    $files[$i]['date']=date('Y-m-d', $modi_fich);
                    $i++;
                }
            }
        }
    }
    if(!IsSet($files)){$files = NULL;}
    return $files;
}




$nbliens=count($myfiles);
echo '<span class="italic">'.$nbliens.' liens référencés dans les fichiers.</span><br />',"\r\n";

if ($nbliens>LIMITLIENPARFICHIER){
    // utilisation de la norme pour les sites souhaitant référencés plus de 1000 liens
    // un fichier sitemap à générer en plus
    $numfichier=1;
    echo '<h2>Génération des fichiers sitemapXX.xml...</h2>',"\r\n";
}else {
    $numfichier='';
    echo '<h2>Génération du fichier sitemap.xml...</h2>',"\r\n";
}

if ($compressionGZ)
{
    //http://docs.php.net/en/ref.zlib.html
    $open='gzopen';
    $write='gzwrite';
    $close='gzclose';
    $GZ='.gz';
} else
{
    $open='fopen';
    $write='fwrite';
    $close='fclose';
    $GZ='';
}

$CurLiens=0;
while ($CurLiens<$nbliens && $CurLiens<LIMITLIENINDEXE )
{
    if ($fp = $open('sitemap'.$numfichier.'.xml'.$GZ, 'w')){
        $write($fp,'<?xml version="1.0" encoding="UTF-8"?>'."\r\n");
        $write($fp,'<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">'."\r\n");
        $Limite = $CurLiens + LIMITLIENPARFICHIER; // si lien courant vaut 20000 dés qu'on arrive à 21000 on arrete

        while ($CurLiens< $Limite && $CurLiens<LIMITLIENINDEXE && list(,$file)=each($myfiles))
        {
            $write($fp,'<url> '."\r\n".' <loc>'.$file['lien'].'</loc> '."\r\n \r\n");
            $write($fp,"\t\t".'<lastmod>'.$file['date'].'</lastmod>'."\n");
            $write($fp,'<changefreq>monthly</changefreq>');
            $write($fp,'<priority>0.5</priority></url>');
            $CurLiens ++;
        }
        $write($fp, '</urlset>');
        $close($fp);
        echo '<a href="./sitemap'.$numfichier.'.xml'.$GZ.'" target="_blank">fichier sitemap'.$numfichier.'.xml'.$GZ.'</a><br />',"\r\n";
    }else{

        echo 'sitemap'.$numfichier.'.xml',"\r\n"
        ,'<br /><br /><textarea rows="30" cols="100">',"\r\n"
        ,'<?xml version="1.0" encoding="UTF-8"?>',"\r\n";
?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
<?php
    foreach($myfiles as $file){
?>
<url>
<loc><?php echo $file['lien']; ?></loc>
<lastmod><?php echo $file['date']; ?></lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>
<?php
    }
?>
</urlset></textarea>
<br />
<?php
    }
    $numfichier++;
}

if ($numfichier!=1)
{
    echo '<h2>Génération du fichier sitemap index file.xml...</h2>';
    // génération du sitemap index file
    if ($fp = fopen('sitemap.xml', 'w+')){

        fwrite($fp, '<?xml version="1.0" encoding="UTF-8"?>'."\r\n");
        fwrite($fp, '<sitemapindex xmlns="http://www.google.com/schemas/sitemap/0.84">'."\r\n");
        $date=date('Y-m-d');

        for($k=1;$k<$numfichier;$k++)
        {
            fwrite($fp, '<sitemap>'."\r\n");
            fwrite($fp,'<loc>'.$racine.'/sitemap'.$k.'.xml'.$GZ.'</loc>'."\r\n");
            fwrite($fp, '<lastmod>'.$date.'</lastmod>'."\r\n");
            fwrite($fp,'</sitemap>'."\r\n");

        }
        fwrite($fp, '</sitemapindex>'."\r\n");
        fclose($fp);
        echo '<a href="./sitemap.xml" target="_blank">fichier sitemap.xml</a><br />',"\r\n";

    } else
    {
        echo '<br /><br /><textarea rows="30" cols="100">',"\r\n"
        ,'<?xml version="1.0" encoding="UTF-8"?>',"\r\n"
        ,'<sitemapindex xmlns="http://www.google.com/schemas/sitemap/0.84">',"\r\n";
        $date=date("Y-m-d");
        for($k=1;$k<$numfichier;$k++)
        {
        echo '<sitemap>',"\r\n"
        ,'<loc>',$racine,'/sitemap',$k,'.xml</loc>',"\r\n"
        ,'<lastmod>',$date,'</lastmod>',"\r\n"
        ,'</sitemap>',"\r\n";
        }
        echo '</sitemapindex>',"\r\n";

    }
}
?>
<span class="italic">génération du sitemap terminé</span>
<p class="center"><a href="#haut" title="Retourner en Haut de la page">Haut de la page</a></p>
</body>

</html>

@+

Commentaire de Mumuri le 17/06/2005 21:13:39

ok j'ai modifié, perso je ne suis pas sur de utf-encode peut etre qu'il faudré faire des tests plus poussé

Commentaire de defrancesco le 20/06/2005 13:16:14

Bonjour,
Je ne suis qu'un petit amateur.
Très intéressé par votre code, j'ai essayé de l'installer.
Malheureusement, j'ai un message d'erreur:
Un caractère incorrect a été trouvé dans un contenu de texte. Erreur de traitement de la ressource http://www.chriproductio...

<title>G

Peut-on m'aider.
Merci d'avance.
Christian

Commentaire de romain2boss le 30/06/2005 20:57:03

Bravo pour le code !!

Un seul bémol : quand on a un site dynamique avec des variables partout dans les url, ca restreint sacrement le nombre de pages ...

Mais bon, on ne peut pas tout avoir ...

Commentaire de j2p le 06/07/2005 16:30:19

Bonjour et bravo,

Un bémol cependant, ça ne marche pas avec php5...

C'est la ligne :
$files=array_merge($files,GetDirContents($dir.'/'.$file));
qui semble poser problème.

A suivre...

Commentaire de j2p le 07/07/2005 09:52:27

Ma modeste contribution...

1) Pour la compatibilité avec PHP5
   Remplacer la ligne suivante:
   $files=array_merge($files,GetDirContents($dir.'/'.$file));
   Par celle-ci:
   $files=array_merge((array)$files,(array)GetDirContents($dir.'/'.$file));

   En effet en PHP5, array_merge n'accepte que les tableau duement déclarés.

2) Pour une meilleure visualisation dans les éditeurs type Dreamweaver
   Remplacer toutes les ocurrences suivantes:
   '<?xml version="1.0" encoding="UTF-8"?>'
   Par ceci:
   html_entity_decode('&lt;?xml version="1.0" encoding="UTF-8"?&gt;')

   Ceci pour éviter que l'éditeur n'interprette le ?> comme une fin de script PHP.


En espérant avoir été utile,

Jean-Pierre

Commentaire de hit7374 le 13/07/2005 09:28:22

salut,
super votre truc, je vais le tester.
question pourrait on l'utiliser pour un site qui n'a pas le php (les pauvres) en déporté en quelque sorte. après il n'y aurait plus qu'à placer par ftp le fichier généré.
de mon coté j'ai écris un petit bout de code tout simple pour le sitemap de sites dynamiques, il s'inspire d'idées émises sur un forum (je remercie celui qui l'a posée).
le principe : on place 2 lignes en tête de page dynamique qui allimentent une table, puis une requête qui régulièrment reprend cette table et génére le fichier xml. ce sont donc les visiteurs qui allimentent la table uniquement avec les pages taggées.
vu la qualité de vos commentaires et corrections j'aimerais vous le passer pour des améliorations certaines.sinon il est sur comscripts à la rubrique divers.
amicalement à tous

Commentaire de Mumuri le 25/07/2005 20:37:18

http://www.blocklayer.com/googlesitemap/

essaye ca ...

Commentaire de hit7374 le 25/07/2005 21:01:25

merci,
ça marche bien sur.
@+

Commentaire de hello6891 le 15/01/2006 14:08:47

Bravo !
Merci d'avoir créé ce script et d'y avoir passé autant de temps
yvan

Commentaire de rvw68 le 24/01/2006 21:51:58

Bonjour,
mon site en php utilise des arguments du genre : articles.php?lng=fr&pg=440 comment les répertorier ?
Bravo et merci.

Commentaire de legaulois le 04/12/2006 13:38:02

voici un [url=http://www.outils-referencement.com/outils/sitemaps/generateur]générateur de sitemap[/url] prenant en compte les paramètres ainsi que les dernières spécifications (http://www.sitemaps.org/) :
http://www.outils-referencement.com/outils/sitemaps/generateur

Commentaire de hello6891 le 18/02/2007 10:40:02

Merci beaucoup pour ce script qui est vraiment très utile !
Bravo !

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,265 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales