Foros del Web » Programando para Internet » PHP »

subida de imagenes con php

Estas en el tema de subida de imagenes con php en el foro de PHP en Foros del Web. Bueno hace unos dias vengo trabajando con un sistema de imagenes, que las sube y redimensiona. Para comprobar si el tipo de archivo es valido ...
  #1 (permalink)  
Antiguo 22/01/2009, 07:06
 
Fecha de Ingreso: abril-2008
Mensajes: 435
Antigüedad: 16 años, 6 meses
Puntos: 10
subida de imagenes con php

Bueno hace unos dias vengo trabajando con un sistema de imagenes, que las sube y redimensiona. Para comprobar si el tipo de archivo es valido lo que hago es levantar el nombre de la imagen y separar de la cadena la extension, eso serian los detalles de mi trabajo.
El asunto es que hice una prueba guardando una javascript y subiendolo con extension jpg, obviamente las librerias gd al intentar tranasformarlo me tiro mensajes de error diciendo que el formato no es valido (obviamente), pero a pesar de todos los mensajes de error me subio igual la imagen al servidor, la pregunta es hay alguna forma de evitarlo? y me conviene comprobar la imagen por extension o con el atributo $_FILES['imagen']['type'] es mas seguro o existe otra manera de hacer esa comprobacion y que no me suban cualquier archivo con extension de imagen?

saludos y gracias de antemano
  #2 (permalink)  
Antiguo 22/01/2009, 07:19
 
Fecha de Ingreso: diciembre-2008
Mensajes: 39
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: subida de imagenes con php

el type lee el mime type del archivo.
es lo mas seguro que podes hacer, en conjuncion con getimagesize($archivo) > 0;
  #3 (permalink)  
Antiguo 22/01/2009, 07:26
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: subida de imagenes con php

tenes que comprobar los archivos por su MIME TYPE y esto corre para TODOS los archivos y comprobaciones

http://ar.php.net/mime_magic
  #4 (permalink)  
Antiguo 22/01/2009, 07:28
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: subida de imagenes con php

como dice tute666 podes usar la funcion getimagesize que en una de sus keys tiene el mimetype

Ej:

Código PHP:
$datos getimagesize("tu_imagen.jpg");
echo 
$datos['mime']; 
el problema es que si no es una imagen te va a tirar error a menos que interpongas una arroba delante de la funcion

@getimagesize()

en fin, lo optimo es usas finfo que segun el manual de php es lo optimo
  #5 (permalink)  
Antiguo 22/01/2009, 16:39
 
Fecha de Ingreso: abril-2008
Mensajes: 435
Antigüedad: 16 años, 6 meses
Puntos: 10
Respuesta: subida de imagenes con php

Lo del error del getimagesize() se me ocurrio solucionandolo asi

width != ""
ya que si es un javascript con extension de imagen $_FILES va a devolver el width y el height como cadena vacia, si me equivoco que alguien me corrija

Gracias
  #6 (permalink)  
Antiguo 23/01/2009, 12:01
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: subida de imagenes con php

sigue siendo una manera poco profesional de hacerlo.

Utiliza las librerias de PHP para eso estan!

http://ar.php.net/mime_magic
  #7 (permalink)  
Antiguo 23/01/2009, 19:12
 
Fecha de Ingreso: abril-2008
Mensajes: 435
Antigüedad: 16 años, 6 meses
Puntos: 10
Respuesta: subida de imagenes con php

Si es verdad, quedo como un parche medio feo, por cierto yo se que lo vi en algun lado pero no me acuerdo donde, pero tenes idea cuales son los tipos de jpg que me puede devolver el $_FILES se que son varios pero como dije no me acuerdo donde lo vi

saludos
  #8 (permalink)  
Antiguo 23/01/2009, 20:08
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: subida de imagenes con php

el mime tipe es unico!


image/jpeg

en el caso de los jpg, despues el resto son extenciones

.jpg
.jpeg
etcetera
  #9 (permalink)  
Antiguo 24/01/2009, 15:30
 
Fecha de Ingreso: abril-2008
Mensajes: 435
Antigüedad: 16 años, 6 meses
Puntos: 10
Respuesta: subida de imagenes con php

Ah no sabia, preguntaba porque ayer hice el echo de un $_FILES['type'] de una imagen y me devolvio image/pjpeg

saludos
  #10 (permalink)  
Antiguo 24/01/2009, 19:12
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: subida de imagenes con php

parece ser que es una falla de internet explorer, enviar ese mime type

mira

http://www.webmasterworld.com/forum88/5931.htm

a tener cuidado con eso! no lo sabia
  #11 (permalink)  
Antiguo 24/01/2009, 20:00
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 8 meses
Puntos: 67
Respuesta: subida de imagenes con php

Mira podrías hacer algo, usa JavaScript para validar la extensión del archivo antes de enviarlo.
  #12 (permalink)  
Antiguo 24/01/2009, 20:17
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: subida de imagenes con php

ElJavista, realizar una comprobacion de extencion es inseguro!, pensa que pueden ponerle extension jpg a un archivo con otro contenido
  #13 (permalink)  
Antiguo 24/01/2009, 20:22
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: subida de imagenes con php

De que vale poner un archivo jpg con otro contenido.
Si al fin y al cabo vas a imprimirlo con etiquetas <img>.
  #14 (permalink)  
Antiguo 24/01/2009, 20:53
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: subida de imagenes con php

a mi no me gustaria que un **imbecil** meta contenidos que no se van a imprimir correctamente en un sistema o sitio que yo este haciendo.... pero bueno eso queda en cada uno.
pero me parece que aunque uno no sea profesional (como yo, o como otros) podria intentar hacer que las cosas funcionen lo mejor posible

de que sirve dejar todo hecho asi nomas!:... para que cuando vallas a mostrar una imagen te encuentres con que no se puede mostrar...
  #15 (permalink)  
Antiguo 24/01/2009, 21:08
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años, 7 meses
Puntos: 33
Respuesta: subida de imagenes con php

Por ahi me encontre esto ->

Cita:
pjpeg mime type refers to a progressive jpeg image. this means it can be streamed and displayed while it is loading. the target system will know ahead of time that it is displaying a progressive jpeg instead of a standard jpeg by the mime-type before the file even starts loading.

not a bug. just a feature not supported by firefox, for some reason.
Saludos
Franco
  #16 (permalink)  
Antiguo 24/01/2009, 21:20
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años, 7 meses
Puntos: 33
Respuesta: subida de imagenes con php

Adell:
El tipìco codigo para subir archivos conlleva ->
Caso PHP:

un is_uploaded_file......
Aqui hph lo sube al directorio temporal segun la directiva del php.ini para la ubicacion de archivos a subir. De no existir esa directiva o no tener un directorio de subida predefinido php lo sube al directorio que por defecto tenga el sistema operativo.
En este punto el archivo subido al directorio temporal siempre se llama asi: php(un numero secuencial).tmp (Ejemplo php34.tmp)
Aqui ya php sabe el tipo, nombre y tamaño.
Aqui puedes utilizar un preg_match para seleccionar los que deseas subir; asimismo, puedes seleccionar tamaños tambien.
Si el archivo no cumple con tus requisitos y el codigo exits() en este punto el archivo desaparece completamente.

un move_upload_file....
Aqui ya el archivo ha sido aceptado y depositado con su adecuado nombre y extension.
Si como mencionaron el archivo pudiera contener codigo malicioso, entonces en este nivel puedes hacer que tu antivirus revise el contenido.

Hasta aqui mis comentarios.
Saludos
Franco
  #17 (permalink)  
Antiguo 25/01/2009, 06:57
 
Fecha de Ingreso: abril-2008
Mensajes: 435
Antigüedad: 16 años, 6 meses
Puntos: 10
Respuesta: subida de imagenes con php

Cita:
a mi no me gustaria que un **imbecil** meta contenidos que no se van a imprimir correctamente en un sistema o sitio que yo este haciendo.... pero bueno eso queda en cada uno.
pero me parece que aunque uno no sea profesional (como yo, o como otros) podria intentar hacer que las cosas funcionen lo mejor posible
totalmente de acuerdo, de hecho mi script funciona bien pero la idea es dejarlo lo mejor posible, primero para no llevarme sorpresas desagradables y segundo para mejorar mi programacion y que las cosas queden lo mas "profesionalmente" posible.

Ahora vuelvo a recurrir a ustedes, que solucion consideran mejor, dentro del if podria pedir que el archivo tenga un mime jpeg o pjpeg, algo asi

if $mime == image/jpeg || $mime == image/pjpeg {
...
} //donde $mime es $_FILES['imagen']['type']

o podria como en el link que me paso korg1988 (por cierto gracias!), cortar la cadena del mime y concentrarme en que nada mas sea una imagen (de todas formas la idea es que tambien sirva para gif y png).
Que opcion consideran mejor?

Gracias a todos por sus respuestas
Saludos
  #18 (permalink)  
Antiguo 25/01/2009, 09:33
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: subida de imagenes con php

Cita:
a mi no me gustaria que un **imbecil** meta contenidos que no se van a imprimir correctamente en un sistema o sitio que yo este haciendo.... pero bueno eso queda en cada uno.
pero me parece que aunque uno no sea profesional (como yo, o como otros) podria intentar hacer que las cosas funcionen lo mejor posible

de que sirve dejar todo hecho asi nomas!:... para que cuando vallas a mostrar una imagen te encuentres con que no se puede mostrar...
Me referia en cuanto a seguridad, no representa ningun riesgo de seguridad. Pero si, a mi tampoco me gustaria que un **imbecil** meta contenidos que no se vallan a imprimir correctamente.
  #19 (permalink)  
Antiguo 25/01/2009, 10:20
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: subida de imagenes con php

si vas a usar varios formatos de archivos podrias hacer directamente una funcion que controle los mimes que vos quieras usar y de esta forma estarias mejorando tu programacion (mejor dicho "ordenando" jajaj)

como puede ser asi

Código PHP:
<?
function checkMime$mimeType )
{
    switch( 
$mimeType )
    {
        
//si es alguno de los mime types permitidos entonces retorno TRUE
        
case 'image/jpeg': return true; break;
        case 
'image/pjpeg': return true; break;
        case 
'image/gif': return true; break;
        case 
'image/png': return true; break;
                
        
//sino retorno FALSE
        
default: return false; break;
    }
}


if( 
checkMime$_FILES['imagen']['type'] ) ) {
    
//aca hago lo que tenga que hacer
}
?>
  #20 (permalink)  
Antiguo 25/01/2009, 12:42
 
Fecha de Ingreso: abril-2008
Mensajes: 435
Antigüedad: 16 años, 6 meses
Puntos: 10
Respuesta: subida de imagenes con php

Me gusto tu idea Korg1988, ese es el orden que estaba buscando

Gracias a todos`por su ayuda
Saludos
  #21 (permalink)  
Antiguo 25/01/2009, 15:12
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 8 meses
Puntos: 67
Respuesta: subida de imagenes con php

Yo sugerí usar el JavaScript para verificar la extensión del archivo, pero nunca dije que se dejara de usar PHP para reconocer realmente el tipo de archivo.
  #22 (permalink)  
Antiguo 26/01/2009, 09:44
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 8 meses
Puntos: 67
Respuesta: subida de imagenes con php

Cita:
Iniciado por korg1988 Ver Mensaje
a mi no me gustaria que un **imbecil** meta contenidos que no se van a imprimir correctamente en un sistema o sitio que yo este haciendo.... pero bueno eso queda en cada uno.
pero me parece que aunque uno no sea profesional (como yo, o como otros) podria intentar hacer que las cosas funcionen lo mejor posible

de que sirve dejar todo hecho asi nomas!:... para que cuando vallas a mostrar una imagen te encuentres con que no se puede mostrar...
Pero acaso no entiendes lo que digo? El JavaScript comprueba solo la extensión y luego el PHP verifica si realmente es ese tipo de archivo mediante (por ejemplo) getimagesize, si un "**imbécil** mete contenidos que no se van a imprimir correctamente en un sistema o sitio" que estás haciendo entonces el PHP va rechazarlo, así de simple. Lo que sugiero es solamente hacer un filtro para evitar que se envíen archivos que tengan otras extensiones que la permitida. Eso es todo. Nunca dije que se dejara de usar el PHP.
  #23 (permalink)  
Antiguo 26/01/2009, 20:52
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: subida de imagenes con php

no tengo nada que entender de lo que digas, no se porque te pones a discutir por algo que dije como 6 comentarios arriba y que lo dije hace dias, y recien ahora caes!.... mmmm

tardaste 1 dia en escribir ese mensaje? ya que el ultimo tuyo es de ayer y este es de hoy

deja de discutir y cerremos este tema que ya se termino hace rato
  #24 (permalink)  
Antiguo 29/01/2009, 12:25
 
Fecha de Ingreso: abril-2008
Mensajes: 435
Antigüedad: 16 años, 6 meses
Puntos: 10
Respuesta: subida de imagenes con php

Hola de nuevo, me surgio la necesidad de reabrir el tema (simplemente para no hacer un tema nuevo), estaba muy tranquilo subiendo mis imagenes, cuando subi un png y me encontre con este mime image/x-png, entonces necesitaba si alguien tenia idea de cuantos de estos modificadores existen ya que compruebo si el archivo es valido por medio del $_FILES[imagen][type].

Saludos
  #25 (permalink)  
Antiguo 29/01/2009, 12:52
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: subida de imagenes con php

tendrias que buscar algun listado de mimetypes ya existente, desconozco todas las variedades

sino tendrias que ponerte a probar mime types y anotarlos
  #26 (permalink)  
Antiguo 29/01/2009, 12:56
 
Fecha de Ingreso: abril-2008
Mensajes: 435
Antigüedad: 16 años, 6 meses
Puntos: 10
Respuesta: subida de imagenes con php

Gracias de nuevo por responder, encontre un listado de mime types muy completo y ahi ese formato me salta con el mime image/png; aparentemente es cosa del internet explorer como me dijiste mas arriba, ya que lo probe en firefox y anduvo bien, por cierto lo probe con el ie6 desconozco si en el 7 ya corrigieron ese error, si alguien lo probo en esa version saqueme la duda, encima lo peor de todo es que mucho gente sigue usando el ie

saludos
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 21:40.