【发布时间】:2014-02-17 10:03:26
【问题描述】:
我的问题很简单:
检查图像类型的最佳(和安全)方法是什么?
我的网站需要它,我想上传照片。 (允许扩展 jpeg、png、gif?)
谢谢你...
【问题讨论】:
-
文件扩展名与文件类型不同
-
我不认为它是重复的。扩展名可以由用户更改...
标签: php
我的问题很简单:
检查图像类型的最佳(和安全)方法是什么?
我的网站需要它,我想上传照片。 (允许扩展 jpeg、png、gif?)
谢谢你...
【问题讨论】:
标签: php
<?php
if (exif_imagetype('image.gif') != IMAGETYPE_GIF) {
echo 'The picture is not a gif';
}
?>
See here 获取可能类型的列表
根据您的要求,您将不得不使用以下内容
IMAGETYPE_GIF
IMAGETYPE_JPEG
IMAGETYPE_PNG
它的安全性如何?
因为它不仅检查扩展名以声明无辜。它实际上是这样做的
exif_imagetype() 读取图像的第一个字节并检查其签名。 当找到正确的签名时,将返回适当的常量值,否则返回值为 FALSE。
【讨论】:
The return value is the same value that getimagesize() returns in index 2 but exif_imagetype() is much faster.
你也可以像这样使用正则表达式:
if( preg_match('/\.(jpg|jpeg|png|gif)(?:[\?\#].*)?$/i', $image, $matches) ) {
//Your code here
}
【讨论】:
$filetype = pathinfo('yourimage.png', PATHINFO_EXTENSION);
if($filetype == "jpeg" || $filetype == "jpg" || $filetype == "png" || $filetype == "gif"){
echo "Yay, correct filetype!";
}
【讨论】: