Si un archivo se carga en el servidor, hay una manera de usar PHP, para asegurarse de que en realidad es una imagen y no sólo un archivo con una extensión .jpg o .gif?Validar que un archivo es una imagen en PHP
Respuesta
Uso de (parte) de la biblioteca GD.
array getimagesize (string $filename [, array &$imageinfo ])
El primer elemento de la matriz será de 0 si no hay imagen. PHP: getimagesize
Si no tiene instalado GD (la mayoría de las veces lo hará), puede leer el encabezado del archivo como Shane mentioned.
EDIT: En realidad, como Neal señaló en los comentarios, la biblioteca GD ni siquiera es necesaria para usar esta función. Entonces úselo.
La manera más eficiente sería mirar los bytes principio del archivo y prueba de los 'número mágico' especificador de fichero. Here is a list of magic numbers.
que sería el más eficiente que disparar hasta GD, pero creo que con el binario se abre, etc .. es un poco más de la cabeza de la mayoría de las personas. –
Si eso es cierto, es bastante decepcionante. ¿La mayoría de la gente no tiene CS grados? –
que no lo hacen .. pero he estado escribiendo código desde que tenía 7. Sorprendentemente, muchas personas pueden obtener grados sin conocer realmente lo que se supone que deben. Hablo por experiencia, porque en realidad tengo un título en ingeniería civil, y conocía muchos "controles deslizantes" que simplemente se deslizaban. Un título no significa nada. La prueba de que puedes hacer algo sí lo hace. – snicker
Para el registro: Ahora en 2013+ podemos:
Para máx. compatibilidad (si no tiene biblioteca GD).
Uso del siempre disponible mime-content-type ((PHP 4> = 4.3.0, PHP 5))
$type = mime_content_type($filename);
if (strstr($type, 'image/'))
{
echo 'is image';
}
Como una actualización esto ahora ya no se utiliza: http://us3.php.net/manual/en/function.mime-content-type.php – bonez
mejor manera de comprobar si el archivo es una imagen
function is_image($path)
{
$a = getimagesize($path);
$image_type = $a[2];
if(in_array($image_type , array(IMAGETYPE_GIF , IMAGETYPE_JPEG ,IMAGETYPE_PNG , IMAGETYPE_BMP)))
{
return true;
}
return false;
}
más: http://www.binarytides.com/php-check-if-file-is-an-image/
- 1. Validar imagen del archivo en C#
- 2. ¿HttpPostedFile.ContentType es una forma perfecta de validar un archivo cargado?
- 3. Comprobar si un archivo es una imagen
- 4. Validar json en php
- 5. Php: Convertir un blob en un archivo de imagen
- 6. ¿Cómo validar un correo electrónico en PHP?
- 7. Cómo validar una fecha MYSQL en PHP?
- 8. ¿Es posible que una vista muestre una imagen web sin guardarla antes en un archivo?
- 9. Detectar si un archivo es una imagen en Python
- 10. Validar un archivo XML ENORME
- 11. Validar un nombre de archivo en python
- 12. parámetros Validar URL en php
- 13. ¿Verifica una imagen remota en realidad es un archivo de imagen en ruby?
- 14. Cómo validar una expresión regular con PHP
- 15. Validar la sintaxis de PHP en VIM
- 16. Validar una propiedad de modelo es mayor que otra
- 17. ¿Hay alguna forma de que PHP detecte una imagen dañada?
- 18. PHP ¿cómo puedo verificar si un archivo es mp3 o archivo de imagen?
- 19. php validar número entero
- 20. Cómo validar que una refactorización es igual al código original
- 21. Rieles: ¿cómo puedo validar que algo es un booleano?
- 22. PHP buscando una cadena en un archivo
- 23. Recortar imagen en PHP
- 24. Cómo detectar si el archivo es una imagen en perl
- 25. ¿Es importante verificar que el archivo cargado sea un archivo de imagen real?
- 26. ¿es necesario validar $ _SERVER ['REMOTE_ADDR']?
- 27. En Javascript Regex, ¿cómo puedo validar que una cadena es un color hexadecimal válido?
- 28. Regex para validar un nombre de archivo
- 29. devuelve una página en PHP como una imagen
- 30. PHP: simple, validar si la cadena es hexadecimal
@Neal - ¡En realidad, no lo hice! No tenía ni idea. Gracias por señalar eso. La respuesta ha sido editada. No es la primera vez que he sido RTFM – snicker
No hay problema^_^¡Feliz de ayudar! – Neal
Es mejor y * más rápido * usar 'exif_imagetype'. – Brett