Если файл загружен на сервер, существует ли способ использования PHP, чтобы убедиться, что на самом деле это изображение, а не только файл с расширением .jpg или .gif?
Подтвердить, что файл представляет собой изображение в PHP
Ответ 1
Использование (часть) библиотеки GD.
array getimagesize ( string $filename [, array &$imageinfo ] )
Первый элемент массива будет 0, если нет изображения. PHP: getimagesize
Если у вас нет установленного GD (большую часть времени вы будете), вы можете прочитать заголовок файла как упомянутый Шейн.
EDIT: Фактически, как отметил Нил в комментариях, библиотека GD даже не требуется использовать эту функцию. Так что используйте ее.
Ответ 2
лучший способ проверить, является ли файл изображением
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;
}
подробнее: http://www.binarytides.com/php-check-if-file-is-an-image/
Ответ 3
Наиболее эффективным способом будет просмотр начальных байтов файла и проверка спецификатора файла "magic number". Вот список магических чисел.
Ответ 4
Для записи: теперь в 2013 году мы можем:
Для макс. совместимость (если у вас нет библиотеки GD).
Используйте всегда доступные mime-content-type ((PHP 4 >= 4.3.0, PHP 5))
$type = mime_content_type($filename);
if (strstr($type, 'image/'))
{
echo 'is image';
}