Подтвердить что ты не робот

Подтвердить, что файл представляет собой изображение в PHP

Если файл загружен на сервер, существует ли способ использования PHP, чтобы убедиться, что на самом деле это изображение, а не только файл с расширением .jpg или .gif?

4b9b3361

Ответ 1

Использование (часть) библиотеки GD.

PHP: 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';
}