Foros del Web » Programando para Internet » PHP »

problema al validar un archivo a abrir

Estas en el tema de problema al validar un archivo a abrir en el foro de PHP en Foros del Web. Hola!! Os explico; me ayudaron a crear un script para abrir solo los archivos permitidos. En este caso se quiere abrir un archivo letras.txt . ...
  #1 (permalink)  
Antiguo 14/07/2005, 06:16
Avatar de wesse  
Fecha de Ingreso: junio-2003
Ubicación: España
Mensajes: 577
Antigüedad: 14 años, 6 meses
Puntos: 1
problema al validar un archivo a abrir

Hola!!
Os explico; me ayudaron a crear un script para abrir solo los archivos permitidos. En este caso se quiere abrir un archivo letras.txt . Si únicamente pongo: readfile($texto); el archivo si se abre y se lee, pero si pongo el resto del script ya me da "archivo no permitido", pese a ser un .txt.
¿Dónde puede estar el error? Mil gracias


<?php
$permitidos = array("txt");
$extension = explode(".",$_GET["archivo"]); //division del archivo que quieres abrir en un array asignando los valores dinamicamiente dividiendo el archivo por el punto, asi nos queda $extension[0] = nombre de la imagen, $extension[1] = extension de la imagen:

for($i=0 ; $i<count($permitidos) ; $i++){
if($permitidos[$i]==$extension[1]){
$valor = "ok";
break;
}
}
if( isset($valor) && !empty($valor) ){


readfile($texto);

}
else{
echo "Archivo no permitido";
}?>
  #2 (permalink)  
Antiguo 14/07/2005, 06:36
 
Fecha de Ingreso: diciembre-2004
Mensajes: 120
Antigüedad: 13 años
Puntos: 0
Hola.
Estas haciendo un readfile ($texto) sin haber asignado nada a $texto, por eso falla.
Prueba lo siguiente:

<?php
$texto = $_GET["archivo"];
$permitidos = array("txt");
$extension = explode(".",$texto); //division del archivo que quieres abrir en un array asignando los valores dinamicamiente dividiendo el archivo por el punto, asi nos queda $extension[0] = nombre de la imagen, $extension[1] = extension de la imagen:
for($i=0 ; $i<count($permitidos) ; $i++){
if($permitidos[$i]==$extension[1]){
$valor = "ok";
break;
}
}
if( isset($valor) && !empty($valor) ){


readfile($texto);

}
else{
echo "Archivo no permitido";
}?>
  #3 (permalink)  
Antiguo 14/07/2005, 14:10
Avatar de wesse  
Fecha de Ingreso: junio-2003
Ubicación: España
Mensajes: 577
Antigüedad: 14 años, 6 meses
Puntos: 1
No funciona, me dice que el archivo no es permitido, y eso que si que es un .txt el archivo...

Te explico un poco mejor...

Tengo un script de paginación en el cual si haces click en un contenido se va a la página esta que te comenté antes.
si pongo readfile($texto); sí me funciona, pq en $texto debe estar la noticia ampliada, pero lo que yo quiero es que si alguien intenta abrir un archivo que no sea un documento de texto (txt) no se abra. Pero al poner este script ya no funciona la cosa...
  #4 (permalink)  
Antiguo 23/07/2005, 04:15
Avatar de wesse  
Fecha de Ingreso: junio-2003
Ubicación: España
Mensajes: 577
Antigüedad: 14 años, 6 meses
Puntos: 1
¿alguien sabe que puede pasar?
  #5 (permalink)  
Antiguo 23/07/2005, 05:21
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Solo que el archivo tenga un punto demás... osease que si se llama este.archivo.txt ya no sirve tu código pués lo que ahora consideras es la extención no lo es en este caso...

Si ese fuese el error, esto te ha de servir:
Código PHP:
<?php
$texto 
$_GET["archivo"];
$permitidos = array("txt");
$partes explode(".",$texto); 
$extension$partes[count($partes)-1]; // la extension "sin fallos"
if(in_array($extension$permitidos)) // Sin for
readfile($texto);
else echo 
"Archivo no permitido";
?>
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #6 (permalink)  
Antiguo 24/07/2005, 16:15
Avatar de wesse  
Fecha de Ingreso: junio-2003
Ubicación: España
Mensajes: 577
Antigüedad: 14 años, 6 meses
Puntos: 1
Lo he probado y no ha funcionado.

A parte, he hecho esto:
<?php
$texto = $_GET["archivo"];
$permitidos = array("txt");
$partes = explode(".",$texto);
$extension= $partes[count($partes)-1]; // la extension "sin fallos"
if(in_array($extension, $permitidos)) // Sin for
readfile($texto);
else echo "Archivo no permitido";
echo "texto: $texto";
echo "permitidos: $permitidos";
echo "partes: $partes";
echo "extension: $extension";
?>

y me aparece:
Archivo no permitido texto: permitidos: Array partes: Array extension:

Porque se queda vacio o aparece "array"?
  #7 (permalink)  
Antiguo 25/07/2005, 01:27
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Aparece vacio porque NO TIENE VALOR. Aparece "Array" porque es eso... un array ó Matriz/Vector en español....

La causa... parece que es algo muy simple: ¿seguro que pasas el nombre de tu archivo por URL??; DEBES acceder a el script con algo como:
http://tudominio/carpeta/archivo.php?archivo=leer.txt

Donde leer.txt es el nombre del archivo a mostrar... obviamnte "carpeta" es opcional.

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 25/07/2005 a las 01:44 Razón: evito enlace
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 00:38.