Foros del Web » Programando para Internet » PHP »

Verificar el tipo de archivo antes de subirlo

Estas en el tema de Verificar el tipo de archivo antes de subirlo en el foro de PHP en Foros del Web. Hola. Estoy haciendo una web en la que se puedan subir imagenes para usarlas despues en foros, blogs, etc. Una alternativa a imageshack vamos, que ...
  #1 (permalink)  
Antiguo 19/12/2011, 07:42
 
Fecha de Ingreso: junio-2011
Mensajes: 45
Antigüedad: 12 años, 10 meses
Puntos: 0
Verificar el tipo de archivo antes de subirlo

Hola.

Estoy haciendo una web en la que se puedan subir imagenes para usarlas despues en foros, blogs, etc. Una alternativa a imageshack vamos, que ultimamente comienza a estar prohibido el uso en foros de imagenes almacenadas ahi, ya que ahora tiene codigo malicioso.

Bueno a lo que voy. He probado para saber el tipo de archivo:
Código PHP:
$_FILES['userfile']['type'
y
Código PHP:
mime_content_type($_FILES['userfile']['name']) 
Que por cierto; ambas parecen ser exactamente lo mismo, dependen del navegador para devolver "image/jpg" por ejemplo.
Pero resulta que si le cambias a una imagen la extension jpg por txt, devuelve text/txt. (Para eso miro cual es la extension del archvio y asi no dependo de si el navegador devuelve o no el mime. De verdad que no entiendo para que sirve ese codigo.)

Entonces, cual es la manera de saber el tipo de archivo por su contenido? O en concreto; ¿Como saber si es una imagen, y de que formato?

Si necesitais probar algo antes de responder, la web es [URL="http://www.aplinet.org"]www.aplinet.org[/URL]
  #2 (permalink)  
Antiguo 19/12/2011, 09:41
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Verificar el tipo de archivo antes de subirlo

a lo sumo con javascript del lado del cliente puedes obtener el nombre del archivo y comparar la extensión (algunos navegadores incluso no lo permiten), pero una vez en PHP ya está subido, de todas formas debes de hacer la re-comprobación en el servidor (PHP) para evitar inyecciones de uploads
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 19/12/2011, 09:48
 
Fecha de Ingreso: julio-2010
Mensajes: 393
Antigüedad: 13 años, 9 meses
Puntos: 67
Respuesta: Verificar el tipo de archivo antes de subirlo

Hola nucleorion, primero decirte que lo que estás haciendo no es "antes de subirlo", pues a esas alturas tu(s) archivo(s) ya han sido subidos y están en la carpeta temporal.

Luego, la forma correcta de validar el tipo de archivo es por medio de su mime-type, pues cambiar la extensión es muy fácil. El mime-type de un archivo viene impregnado en sus cabeceras y anque sea más complicado, validar así es la forma correcta.

Un saludo!
__________________
Páginas web de alta calidad y hechas a la medida.
  #4 (permalink)  
Antiguo 20/12/2011, 10:41
 
Fecha de Ingreso: junio-2011
Mensajes: 45
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Verificar el tipo de archivo antes de subirlo

Como digo en el mensaje inicial, si a un archivo jpg llamado imagen.jpg y que me da "image/jpg" lo renombro y le llamo image.txt lo que me da es "text/txt" por lo que eso no sirve de nada ya que para eso miro la extension y no dependo de si el navegador soporta o no mime.

Ya se que a esas alturas el archivo ya esta subido, de momento no es un problema. Solo quiero saber si es una imagen o no para mostrarla o avisar de que el archivo subido no es una imagen.
  #5 (permalink)  
Antiguo 20/12/2011, 14:00
 
Fecha de Ingreso: junio-2008
Ubicación: CABA
Mensajes: 11
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Verificar el tipo de archivo antes de subirlo

Código PHP:
Ver original
  1. <?php
  2.  echo $_FILES["file"]["type"];
  3.  echo "<hr/>";
  4.  $finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension
  5.  echo finfo_file($finfo, $_FILES["file"]['tmp_name']);
  6.  finfo_close($finfo);
  7. ?>

Con esto anda.
finfo_file funciona con la 5.3 en adelante..
  #6 (permalink)  
Antiguo 21/12/2011, 11:44
 
Fecha de Ingreso: junio-2011
Mensajes: 45
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Verificar el tipo de archivo antes de subirlo

Cachis! todavia tengo la 5.2 en mi server baratito. Si no aparece otra solucion tendre que esperar a que se decidadn a actualizar.

Gracias.

Etiquetas: imagenes, subirlo, tipo, verificar
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 08:48.