验证文件是PHP中的图片

jd.*_*jd. 13 php security validation image

如果文件上传到服务器,有没有办法使用PHP,以确保它实际上是一张图片,而不仅仅是一个.jpg或.gif扩展名的文件?

sni*_*ker 14

使用GD库的(部分).

PHP:GD - 手册

array getimagesize ( string $filename [, array &$imageinfo ] )
Run Code Online (Sandbox Code Playgroud)

如果没有图像,则数组的第一个元素为0.PHP:getimagesize

如果您没有安装GD(大部分时间都可以),您可以阅读Shane提到的文件头.

编辑:实际上,正如Neal在评论中指出的那样,GD库甚至不需要使用此功能.所以使用它.

  • 官方文档说"不要使用getimagesize()来检查给定文件是否是有效图像" (8认同)
  • 使用`exif_imagetype`更好,更快*. (3认同)
  • @Neal - 实际上,我没有!我不知道.感谢您指出了这一点.答案已被编辑.这不是我第一次使用RTFM (2认同)

Hoà*_*gtt 6

检查文件是否为图像的最佳方法

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;
}
Run Code Online (Sandbox Code Playgroud)

更多:http://www.binarytides.com/php-check-if-file-is-an-image/

  • [警告:](http://php.net/manual/function.getimagesize.php) **不要使用** `getimagesize()` 来检查给定文件是否是有效图像。 (3认同)