php内置函数获取图片类型-exif_imagetype

PHP 图片上传,只是使用$_FILES["file"]["type"] 简单校验一下,随便一个文件如 rar,zip,php,java等文件改个文件名,改个后缀就能以图片形式上传到服务器,这样肯定是不好的。下面介绍使用exif_imagetype()方法校验图片真实格式的方法。

1、配置文件:(如果没有安装exif扩展需要安装扩展)

extension=php_mbstring.dll
extension=php_exif.dll      ; Must be after mbstring as it depends on it

2、使用

   /**
     * 1、判断图片格式
     */
    public function checkImg()
    {
        $file = "./down/test.jpg";
        $check = @exif_imagetype($file);
        $allowedExts = array(IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG);
        if (in_array($check, $allowedExts)) {
            echo "是图片";
        } else {
            echo "不是图片";
        }
     
    }

3、exif_imagetype()方法介绍

手册:http://php.net/manual/zh/function.exif-imagetype.php

exif_imagetype() — 判断一个图像的类型

说明

int exif_imagetype ( string $filename )

exif_imagetype() 读取一个图像的第一个字节并检查其签名。

本函数可用来避免调用其它 exif 函数用到了不支持的文件类型上或和 $_SERVER['HTTP_ACCEPT'] 结合使用来检查浏览器是否可以显示某个指定的图像。

参数

filename

被检查的图像文件名。

返回值

如果发现了恰当的签名则返回一个对应的常量,否则返回 FALSE

预定义常量

定义有以下常量,并代表了 exif_imagetype() 可能的返回值:

图像类型常量
常量
1 IMAGETYPE_GIF
2 IMAGETYPE_JPEG
3 IMAGETYPE_PNG
4 IMAGETYPE_SWF
5 IMAGETYPE_PSD
6 IMAGETYPE_BMP
7 IMAGETYPE_TIFF_II(Intel 字节顺序)
8 IMAGETYPE_TIFF_MM(Motorola 字节顺序)
9 IMAGETYPE_JPC
10 IMAGETYPE_JP2
11 IMAGETYPE_JPX
12 IMAGETYPE_JB2
13 IMAGETYPE_SWC
14 IMAGETYPE_IFF
15 IMAGETYPE_WBMP
16 IMAGETYPE_XBM

(完)

猜你喜欢

转载自blog.csdn.net/qq_14969259/article/details/81301545