Foros del Web » Programando para Internet » PHP »

No listar archivos con extension php

Estas en el tema de No listar archivos con extension php en el foro de PHP en Foros del Web. Hola, tengo un script, en que me lista los archivos de un directorio y al hacer click en ellos, se pueden borrar. La pega es ...
  #1 (permalink)  
Antiguo 01/05/2010, 07:55
 
Fecha de Ingreso: septiembre-2009
Mensajes: 19
Antigüedad: 14 años, 7 meses
Puntos: 0
No listar archivos con extension php

Hola, tengo un script, en que me lista los archivos de un directorio y al hacer click en ellos, se pueden borrar.
La pega es que en este directorio, están los archivos php para poder manejar estos archivos y me gustaría que no se me mostrasen, sólo los archivos tipo doc, pdf, txt...etc

el codigo es el siguiente

Código:
<?php
function getFiles($path) {
	$files = array();
	$fileNames = array();
	$i = 0;
	if (is_dir($path)) {
		if ($dh = opendir($path)) {
			while (($file = readdir($dh)) !== false) {
				if ($file == "." || $file == "..") continue;
					$fullpath = $path . "/" . $file;
					$fkey = strtolower($file);
					while (array_key_exists($fkey,$fileNames))
						$fkey .= " ";
					$a = stat($fullpath);
					$files[$fkey]['size'] = $a['size'];
					if ($a['size'] == 0)
						$files[$fkey]['sizetext'] = "-";
					else if ($a['size'] > 1024)
						$files[$fkey]['sizetext'] = (ceil($a['size']/1024*100)/100) . " Kb";
					else if ($a['size'] > 1024*1024)
						$files[$fkey]['sizetext'] = (ceil($a['size']/(1024*1024)*100)/100) . " Mb";
					else
						$files[$fkey]['sizetext'] = $a['size'] . " bytes";
					$files[$fkey]['name'] = $file;
					$files[$fkey]['type'] = filetype($fullpath);
					$fileNames[$i++] = $fkey;
			}
			closedir($dh);
		} else die ("No pudo abrirse el directorio: $path");
	} else die ("La ruta no es un directorio: $path");
	sort($fileNames,SORT_STRING);
	$sortedFiles = array();
	$i = 0;
	foreach($fileNames as $f)
		$sortedFiles[$i++] = $files[$f];
	return $sortedFiles;
}
$dir = "./"; // Aquí ponemos directorio 
		
// Comprobamos si el nombre pasado tiene "/" (para evitar salir de directorios, lee debajo del code) o si no existe
if(!isset($_GET['archivo']) || !preg_match('/[^\/]/',$_GET['archivo']) || $_GET['archivo']=="." || $_GET['archivo']==".."){
	$files = getFiles($dir);
	   foreach ($files as $file) echo "&nbsp;&nbsp;&nbsp;&nbsp;<b><a href=\"./borrar2.php?archivo=".$file["name"]."\">".$file["name"]."</a></b><br>\n";
}
else {
	if (file_exists($dir.$_GET['archivo'])) {
		unlink($dir.$_GET['archivo']);
		die("Archivo eliminado.\n");
	} else
		die("El archivo ".$_GET['archivo']." no existe.\n");
}
?>
gracias de antemano por vuestra ayuda
  #2 (permalink)  
Antiguo 01/05/2010, 10:54
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: No listar archivos con extension php

Justo cuando empieza el bucle para leer archivos, añades algo así:

Código PHP:
$ext substr($file, -33);
if(
$ext == "php") continue; 

Con eso creo que bastará.

Un saludo
  #3 (permalink)  
Antiguo 01/05/2010, 12:44
Avatar de dargor  
Fecha de Ingreso: octubre-2009
Mensajes: 134
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: No listar archivos con extension php

otra opción

$archivo="archivo.php";
if (!stristr($archivo, "php")){
echo"el archivo no es php";
}else{
echo"el archivo si es php";
}

solo que esta opción busca "php" en todo el nombre, no solo la extensión.
  #4 (permalink)  
Antiguo 01/05/2010, 14:03
 
Fecha de Ingreso: septiembre-2009
Mensajes: 19
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: No listar archivos con extension php

Muchas gracias, no me imaginaba que podía ser tan sencillo.
El script funciona a la perfección , ahor aun poquito de estilos y solucionado

Muchas gracias por tu ayuda
  #5 (permalink)  
Antiguo 01/05/2010, 15:19
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: No listar archivos con extension php

Cita:
Iniciado por Heli0s Ver Mensaje
Justo cuando empieza el bucle para leer archivos, añades algo así:

Código PHP:
$ext substr($file, -33);
if(
$ext == "php") continue; 

Con eso creo que bastará.

Un saludo
Cuidado con algún eventual archivo .html o .js.
  #6 (permalink)  
Antiguo 01/05/2010, 16:52
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: No listar archivos con extension php

Esos también deberían ser protegidos, pero bueno, el solo habló sobre PHP.


Un saludo
  #7 (permalink)  
Antiguo 01/05/2010, 17:03
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: No listar archivos con extension php

Lo mencioné porque además agregó "etc". Y ya sé lo sorpresivos que pueden ser algunos de esos etcéteras. .

Etiquetas: extension, listar
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 16:42.