$valor){ switch ($campo) { //Obtenemos una ruta, carpeta o archivo case "una-ruta": $ruta = htmlspecialchars($valor, ENT_QUOTES); if (get_magic_quotes_gpc() == 1) $ruta = stripslashes($ruta); break; //Vemos la codificación case "una-codificacion": $codificacion = htmlspecialchars($valor, ENT_QUOTES); if (get_magic_quotes_gpc() == 1) $codificacion = stripslashes($codificacion); break; } } } //Si la ruta es vacía, pone la del presente script if ($ruta == "") $ruta = dirname(__FILE__)."/"; //Esta variable contendrá la lista de nodos (carpetas y archivos) $presenta_nodos = ""; //Esta variable es para el contenido del archivo $presenta_archivo = ""; //Si la ruta es una carpeta, la exploramos. Si es un archivo //sacamos también el contenido del archivo. if (is_dir($ruta)){//ES UNA CARPETA //Con realpath convertimos los /../ y /./ en la ruta real $ruta = realpath($ruta)."/"; //exploramos los nodos de la carpeta $presenta_nodos = explora_ruta($ruta); } else {//ES UN ARCHIVO $ruta = realpath($ruta); //Sacamos también los nodos de la carpeta $presenta_nodos = explora_ruta(dirname($ruta)."/"); //Y sacamos el contenido del archivo $presenta_archivo = "
CONTENIDO DEL ARCHIVO: ". $ruta."
".
    explora_archivo($ruta, $codificacion).
    "
"; } //Función para explorar los nodos de una carpeta //El signo @ hace que no se muestren los errores de restricción cuando //por ejemplo open_basedir restringue el acceso a algún sitio function explora_ruta($ruta){ //En esta cadena haremos una lista de nodos $cadena = ""; //Para agregar una barra al final si es una carpeta $barra = ""; //Este es el manejador del explorador $manejador = @dir($ruta); while ($recurso = $manejador->read()){ //El recurso sera un archivo o una carpeta $nombre = "$ruta$recurso"; if (@is_dir($nombre)) {//ES UNA CARPETA //Agregamos la barra al final $barra = "/"; $cadena .= "CARPETA: "; } else {//ES UN ARCHIVO //No agregamos barra $barra = ""; $cadena .= "ARCHIVO: "; } //Vemos si el recurso existe y se puede leer if (@is_readable($nombre)){ $cadena .= "$recurso$barra"; } else { $cadena .= "$recurso$barra"; } $cadena .= "
"; } $manejador->close(); return $cadena; } //Función para extraer el contenido de un archivo function explora_archivo($ruta, $codif){ //abrimos un buffer para leer el archivo ob_start(); readfile($ruta); //volcamos el buffer en una variable $contenido = ob_get_contents(); //limpiamos el buffer ob_clean(); //retornamos el contenido después de limpiarlo //aplicando la codificación seleccionada return htmlentities($contenido, ENT_QUOTES, $codif); } ?> Explora carpetas ... ...

Opciones de configuración PHP (restringen explorador)

Exploración

" method="get"> Ruta (En Windows pueden usarse ambas barras "/" y "\")

Codificación para ver archivos:
$presenta_nodos"; echo "
$presenta_archivo"; ?>