Foros del Web » Programando para Internet » PHP »

problemas con generador.php de sitemaps

Estas en el tema de problemas con generador.php de sitemaps en el foro de PHP en Foros del Web. hola tengo el generador.php de http://www.formacion-dka.es/utilidad...or-sitemap.htm lo que me pasa es que ago todo lo que pone el tutorial y cuando lo genero me da ...
  #1 (permalink)  
Antiguo 01/08/2008, 15:05
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 8 meses
Puntos: 8
problemas con generador.php de sitemaps

hola tengo el generador.php de

http://www.formacion-dka.es/utilidad...or-sitemap.htm

lo que me pasa es que ago todo lo que pone el tutorial y cuando lo genero me da el error

Warning: array_merge() [function.array-merge]: Argument #1 is not an array in /home/quatromu/public_html/generador.php on line 165


en la linea 165 tengo

Código PHP:
 $files=array_merge($files,GetDirContents($dir.'/'.$file)); 
no se que tengo que arreglar para que funcione
  #2 (permalink)  
Antiguo 08/08/2008, 02:23
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 8 meses
Puntos: 8
Respuesta: problemas con generador.php de sitemaps

nadie sabe como solucionarlo?
  #3 (permalink)  
Antiguo 08/08/2008, 02:29
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: problemas con generador.php de sitemaps

Que contiene tu variable $files?
Muestra el codigo que contiene esa variable, para asi poder ayudarte.
  #4 (permalink)  
Antiguo 08/08/2008, 03:09
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 8 meses
Puntos: 8
Respuesta: problemas con generador.php de sitemaps

aqui va el codigo

Código PHP:
<!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>Generador de Google sitemap.xml</title>
</head>
<body id="haut">
<h2 class="center">Generador de sitemap en xml</h2>

<br />
</a>
</p>
<h2>Listados de urls autorizadas para el sitemap</h2>
<?php
//set_time_limit(60*10); no utilizar si no es necesario (webs muy grandes) :Fija el tiempo para ejecutar el script en este caso 10 minutos (10*60 seconde)
define('LIMITLIENPARFICHIER',1000); // 1000 Lineas en el fichero
define('LIMITLIENINDEXE',50000); // 50 000 total de lineas urls
// GENERADOR DE FICHEROS SITEMAPS.XML PARA GOOGLE
// 1- editar archivos, carpetas y extensiones prohibidas y su modus operandi (0 por defecto) (sin /)
// 2- editar la variable $ compressionGZ de tener o no una compresión en sus archivos (válido sólo si tiene más de 1000 enlaces)
// 3- cargar el archivo a su cuenta y ejecutarse desde un navegador
/** NOTA:
Si tenemos
./image/
./image/verano
./image/invierno
si luego poner "imagen" en caso prohíbe todas las subcarpetas se prohibirán 
si usted se pone "invierno" cuando el registro de invierno se prohibió 
No "/ images / invierno"
*/
$racine'http://'.$_SERVER['HTTP_HOST'];
$compressionGZ false// false no comprime true comprime
$Goption=0;// Opcion de filtrado (Dejar a 0 solo se usa para casos puntuales)
// 0 - filtrado bit a bit (de la variable dossiercherche==dossierencour)
// 1 - presencia de una porción de la palabra en el expediente
// 2 - filtrado de las expresiones regulares
$ExtensionsAutorises= array('php','php3','html','htm','hrml','asp','jpg','gif');
$DossiersInterdits = array('includes','modules','sessions','images','pnadodb','webanalyse','_flood','javascript','language','parameters','smileys','themes','_streifer''admin''cgi-bin');
$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('.');
/**
<br />
Funcion  Dossier_Autorisé
param : $DossierCourant
return : Verdadero si archivo falso autorice otra cosa
*/
function Dossier_Autorisé($DossierCourant){
    global 
$DossiersInterdits;
    return 
Est_Autorisé($DossierCourant$DossiersInterdits);
}
/**
Funcion Dossier_Autorisé
param : $DossierCourant
return : Verdadero si archivo falso autorice otra cosa
*/
function Fichier_Autorisé($FichierCourant){
    global 
$FichiersInterdits;
    return 
Est_Autorisé($FichierCourant$FichiersInterdits);
}
/**
Funcion Extension_Autorisé
*/
function Extension_Autorisé($ExtensionCourante){
    global 
$ExtensionsAutorises;
    return !
Est_Autorisé($ExtensionCourante,$ExtensionsAutorises);
}
/**
puede alcanzar los dos anteriores
*/
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:
            
// compracion bit a bit
            
return ($DossierCourant == $Dossier);
        break;
        case 
1:
            
// filtra con strpos
            
$pos strpos($mystring$findme);
            if (
$pos === false) {
                return 
false;
            } else {
                return 
true;
            }
        break;
        case 
2:
            
// filtra con las expresiones regulares
            
return ereg($Dossier,$DossierCourant);
        break;
    }
}
/**
Funcion getextension : devuelve la extensión de un archivo
source : nexen.net
param : $fichier
return: extension del fichero
*/
function getextension($fichier){
    
$bouts explode('.'$fichier);
    return 
array_pop($bouts);
}

/**
Funcion GetDirContents
param : $dir carpeta raíz (la prueba es recursivo)
return : lista las 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);
                    
// añadiendo la fecha
                    // codigo : 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.' enlaces referenciados en los archivos.</span><br />',"\r\n";
if (
$nbliens>LIMITLIENPARFICHIER){
    
// Utilizando el estándar para los sitios que deseen referenciados más de 1000 enlaces
    // mapa web de archivos para generar un mayor
    
$numfichier=1;
    echo 
'<h2>Generados los ficheros sitemapXX.xml...</h2>',"\r\n";
}else {
    
$numfichier='';
    echo 
'<h2>Generacion del fichero 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 es actual vínculo 20000 dice que llega a 21000 en PAUSA
        
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>weekly</changefreq>');
            
$write($fp,'<priority>0.5</priority></url>');
            
$CurLiens ++;
        }
        
$write($fp'</urlset>');
        
$close($fp);
        echo 
'<a href="./sitemap'.$numfichier.'.xml'.$GZ.'" target="_blank">FICHERO 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>weekly</changefreq>'."\r\n";
        echo 
'<priority>0.5</priority></url>'."\r\n";
        
$CurLiens ++;
    }
    echo  
'</urlset></textarea><br />';
 }
 
$numfichier++;
}
if (
$numfichier!=1)
{
    echo 
'<h2>Generados los ficheros 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">FICHERO 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">Generación del sitemap terminado</span>
<p class="center"><a href="#haut" title="Volver a iniciar">Volver a Iniciar</a></p>
</body>
</html>

la linea que da el error es
Código PHP:
$files=array_merge($files,GetDirContents($dir.'/'.$file)); 
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:33.