Explorador de Archivos en PHP

explorador-de-archivos-en-php

Este es un script que nos permite visualizar en un navegador web el contenido de un directorio.  A continuación se muestra el contenido del script y algunas líneas con comentarios para poder entederlo.


Para empezar podemos crear un archivo que se llama explorador.php y pegamos todo este script: (lo detallo a continuación)


 
   $default_dir=”C:”; //indicamos el directorio donde inicia el explorador
  
   echo “EXPLORADOR DE ARCHIVOS<br>”;
   if(!file_exists($default_dir)) //verificamos que existe el directorio
   {
        echo “<br>Error… El directorio no existe. Configura bien tu variable \”default_dir\” …”;    
   }
   else 
   { 
        //TRAMO DE VALIDACION
        if($_GET['dir']==”) //valor pasado por la URL, si esta vació, asignamos el directorio por default
        {
           $dir=$default_dir;
        }
        else
        {       
            if(!file_exists($_GET['dir'])) //si nos pasaron un valor checamos si existe, si no existe ponemos el default
            {
                $dir=$default_dir;
             }
             else
             {        
                $dir=$_GET['dir'];  //si existe, lo asignamos…
             }                                        
         }         
         $dp=opendir($dir); //abrimos el directorio 
         while($file=readdir($dp)) //hacemos un ciclo para guardar los nombres de los directorios y archivos que se tienen en el directorio actual
        {
             $filenames[]=$file;   
        } 
        sort($filenames); //ordenamos los directorios alfabéticamente
        for($i=0;$i<count($filenames);$i++) //hacemos un ciclo para ir mostrando el contenido del directorio
       {
           $file=$filenames[$i];   

           //checamos si la variable dir es igual al directorio por defecto y ademas PHP al abrir un directorio pone los puntos (./ y ../ que sirve para ir al directorio raíz o uno mas abajo) pero como comparamos que la variable dir sea igual al default entonces no hay ni directorio raís (porque no encontramos en él) ni subdirectorios entonces mandamos continue que se regresaría al ciclo del for
           if($dir==$default_dir && ($file==”.”||$file==”..”))
            continue;
           //cuando checamos que la variable dir no es el default pero recordamos que php manda el ./ lo vamos a omitir, por lo que con el continue regresamos al ciclo del for
            if(is_dir(”$dir/$file”)&&$file==”.”)
            continue;
            if(is_dir(”$dir/$file”)) //checamos si es un directorio, si lo es, tenemos dos casos que sea el ../ que sería para bajar un nivel o es un directorio fisico
            {
                 if($file==”..”) // si son ../ regresamos un nivel
                 {
                       $current_dir=basename($dir);
                       $parent_dir=ereg_replace(”/$current_dir$”,”",$dir);
                       echo “<a href=\”$_SELF?dir=$parent_dir\”>$file/</a><br>”;
                  }
                  else //de lo contrario mostramos el nombre del directorio y agregamos su url
                 {
                       echo “<a href=\”$_SELF?dir=$dir/$file\”>$file/</a><br>”;
                 }           
            }
            else //si no es un directorio, es un archivo, lo mostramos con su url
            {             
                 echo “<a href=\”./$dir/$file\”>$file </a><br>”; 
             }              
       } // llavel del for
   }  //llave del else
?>



Como pueden ver esta muy sencillo, además este script esta muy básico; se le pueden agregar validaciones (impedir que se entren a dichos directorios, etc..) además se puede agregar el tamaño, fecha, etc. ó ponerle una imagen descriptiva del tipo de archivo y una imagen de un carpeta para los directorios. Solo es cuestión de imaginación…


 


Saludos…


 


 


Deja un comentario