validar una tamaño saber is_image imagen extension existe comprobar archivo php image file-upload getimagesize

tamaño - Comprobación de PHP si el archivo es una imagen



validar extension de archivo php (3)

Esta pregunta ya tiene una respuesta aquí:

¿Hay alguna forma de asegurarse de que un archivo recibido sea una imagen en PHP ?

Las pruebas de la extensión no me parecen muy seguras ya que puede cargar un script y cambiar su extensión a lo que desee.

Intenté usar getimagesize también, pero podría haber algo más adecuado para ese problema en particular.


El getimagesize () debería ser la forma más definida de determinar si el archivo es una imagen:

if(@is_array(getimagesize($mediapath))){ $image = true; } else { $image = false; }

porque este es un resultado de muestra getimagesize () :

Array ( [0] => 800 [1] => 450 [2] => 2 [3] => width="800" height="450" [bits] => 8 [channels] => 3 [mime] => image/jpeg)


Forma nativa de obtener el tipo mimet:

Para PHP <5.3 use mime_content_type()
Para PHP> = 5.3 use finfo_open() o mime_content_type()

Las alternativas para obtener MimeType son exif_imagetype y getimagesize , pero estas dependen de tener instaladas las bibliotecas apropiadas. Además, es probable que solo devuelvan tipos de imagen de mimet, en lugar de la lista completa dada en magic.mime .

Mientras que mime_content_type está disponible desde PHP 4.3 y es parte de la extensión FileInfo (que está habilitada de manera predeterminada desde PHP 5.3, excepto para las plataformas de Windows, donde debe habilitarse manualmente, para más detalles, consulte here ).

Si no quiere preocuparse por lo que está disponible en su sistema, simplemente ajuste las cuatro funciones en un método proxy que delegue la llamada de función a lo que esté disponible, por ejemplo:

function getMimeType($filename) { $mimetype = false; if(function_exists(''finfo_open'')) { // open with FileInfo } elseif(function_exists(''getimagesize'')) { // open with GD } elseif(function_exists(''exif_imagetype'')) { // open with EXIF } elseif(function_exists(''mime_content_type'')) { $mimetype = mime_content_type($filename); } return $mimetype; }


Usar la extensión de archivo y la función getimagesize para detectar si el archivo cargado tiene el formato correcto es solo la verificación de nivel de entrada y puede omitir simplemente cargando un archivo con extensión verdadera y un byte de un encabezado de imagen pero con contenido incorrecto.

para que sea seguro y seguro, puede hacer una miniatura / cambiar el tamaño (incluso con los tamaños de imagen originales) de la imagen cargada y guardar esta versión en lugar de la cargada. También es posible subir el contenido del archivo y buscarlo en caracteres especiales como <?php para encontrar que el archivo es una imagen o no.