Foros del Web » Programando para Internet » PHP »

getimagesize devuelve el número 3

Estas en el tema de getimagesize devuelve el número 3 en el foro de PHP en Foros del Web. Hola! Tengo un sistema de subida donde se pueden subir hasta 4 imgs. con un bucle for, paso por cada una de ellas para procesarla ...
  #1 (permalink)  
Antiguo 12/09/2009, 10:02
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 8 meses
Puntos: 7
Hola!

Tengo un sistema de subida donde se pueden subir hasta 4 imgs.

con un bucle for, paso por cada una de ellas para procesarla (comprobar el tipo de imagen)

Esta es la parte que me falla

Código PHP:
move_uploaded_file $_FILES['file']['tmp_name'][$i], $destino '/' $lastid); 


list(
$width$height$tipo_img) = getimagesize($destino '/' $lastid); 
Al pasar por aquí, en lugar de contener "IMAGETYPE_XXX", la pariable tipo_img contiene el valor 3

¿Por qué puede ser?

Abajo dejo una parte más amplia del código

Edito:

Lo he solucionado con esto:

Código PHP:
list($width$height) = getimagesize($destino '/' $lastid); 

if( (
$width>10) and ($height>10) ){

echo 
"<div class='infobox'>La " $i_mas_uno "&ordm; imagen ha sido enviada correctamente...</div>";

}else{

unlink('./imagenes/subidas/' $lastid);

//SIGUE EL CODIGo.... 
¿Es seguro? (Lo he hecho así teniendo en cuenta que todas las imágenes tienen alto y ancho, y otros archivos no)

Creo que el 3 salía porque la imagen se guarda con un nombre numércio, sin .ext.. y por eso no salía nada... ¿es así?

Si alguien sabe la solución para que solo se acepten jpg, gif y png la agradecería mucho (teniendo en cuenta que las imágenes se guardan con un nombre numérico)

Me he dado cuenta que se pueden subir archivos flash


¿No hay otro modo de obligar que sean JPG GIF o PNG's?

Saludos!

Última edición por GatorV; 13/09/2009 a las 15:28
  #2 (permalink)  
Antiguo 13/09/2009, 11:57
Avatar de korg1988  
Fecha de Ingreso: junio-2006
Ubicación: Santa Fe, Argentina
Mensajes: 825
Antigüedad: 18 años, 4 meses
Puntos: 19
Respuesta: getimagesize devuelve el número 3

si, utilizando el MIME TYPE de los archivos para comprobarlos
por ejemplo asi

Código php:
Ver original
  1. if( $_FILES['file']['type'] == "image/jpeg" ||
  2.     $_FILES['file']['type'] == "image/png" ||
  3.     $_FILES['file']['type'] == "image/gif" ) {
  4.  
  5.     //subo el archivo
  6.  
  7. } else {
  8.     print "El archivo subido no es un formato de imagen admitido";
  9. }
  #3 (permalink)  
Antiguo 13/09/2009, 13:00
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 8 meses
Puntos: 7
Respuesta: getimagesize devuelve el número 3

Gracias

El problema es que los usuarios pueden subir archivos php, y hacer que el navegador los interprete por jpg... además, los navegadores tienen diferentes valores para las imágenes..

unos image/jpg, otros, image/jpeg, etc...

Saludos y gracias de todos modos ;)
  #4 (permalink)  
Antiguo 13/09/2009, 15:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: getimagesize devuelve el número 3

Aquí hay una lista: http://www.php.net/manual/en/image.constants.php de las constantes IMAGE_XXX que te regresa getimagesize.

Saludos.
  #5 (permalink)  
Antiguo 14/09/2009, 03:29
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 8 meses
Puntos: 7
Respuesta: getimagesize devuelve el número 3

Gracias, pero esque yo hacía un echo de la variable tipo_img y me devolvía un 3, en lugar de IMAGETYPE_XXX

Saludos!

Edito: Cod PHP

Código PHP:
move_uploaded_file $_FILES['file']['tmp_name'][$i], $destino '/' $lastid); 


list(
$width$height$tipo_img) = getimagesize($destino '/' $lastid); 
  #6 (permalink)  
Antiguo 14/09/2009, 08:42
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: getimagesize devuelve el número 3

Lo que pasa es que IMGTYPE_XXX es una constante, no una variable, por eso tienes que comparar los valores con la lista que te indique.

Saludos.
  #7 (permalink)  
Antiguo 14/09/2009, 14:35
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 8 meses
Puntos: 7
Respuesta: getimagesize devuelve el número 3

Gracias de nuevo, pero es que este es el código:
Código PHP:

mysql_query
("INSERT INTO.........");



$lastid=mysql_insert_id();


move_uploaded_file $_FILES['file']['tmp_name'][$i], $destino '/' $lastid); 


list(
$width$height,$tipo_de_imagen) = getimagesize($destino '/' $lastid); 

echo 
$tipo_de_imagen;

exit(); 
//Para comprobar el contenido de la variable 
.Pues $tipo_de_imagen, en lugar de devolver IMAGETYPE_PNG,GIF,etc... lo que aparece en pantalla es un 3, pero si hago un hecho con la variable width o height, sí me da el dato correcto.....

Saludos y espero que puedan ayudarme
  #8 (permalink)  
Antiguo 15/09/2009, 10:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: getimagesize devuelve el número 3

Como te comento, es una constante, revisa la lista y compara los valores, por ejemplo si quieres ver el valor de una constante usa:
Código PHP:
Ver original
  1. echo constant("IMAGETYPE_PNG");

Saludos.
  #9 (permalink)  
Antiguo 15/09/2009, 13:04
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 8 meses
Puntos: 7
De acuerdo Respuesta: getimagesize devuelve un número [Resuelto]

Ahh!

Gracias

Creía que daba una variable con un string que era IMAGETYPE_GIF o otro...

Y encima daba la casualidad de que todas eran PNG y daban 3

Muchas gracias por tu ayuda

Pd.: He cambiado el título para que se vea desde google es que no vi nada al respecto.
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 14:42.