可能重复:
How to check if an uploaded file is an image without mime type?
uploading, processing, storing and delivering user-provided files and images
我有图像共享脚本,我做了一半。 用户可以将任何php或cgi文件重命名为.jpg并上传并上传至少
如何防止上传这些假图片?
这是检查文件类型的方法
$userfile_type = $_FILES['file']['type'];
当我将php文件重命名为php.jpg时,可以轻松上传。
答案 0 :(得分:3)
// return mime type ala mimetype extension
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$type = finfo_file($finfo, $tmp_name);
finfo_close($finfo);
这是服务器,为您提供文件类型,而不是示例中的浏览器。
使用GD你可以做类似的事情 和getimagesize() 如果文件不是图像,则返回零
编辑:“getimagesize不是GD库函数。它原生于PHP”感谢Vivek
快乐的编码!!
答案 1 :(得分:1)
使用imagemagick并检查图像信息
答案 2 :(得分:1)
答案 3 :(得分:1)
您可以使用getimagesize()检查图像大小。如果函数无法获得大小,则返回False。如果你可以使用GD库并使用imagecreatefromstring()函数来查看它是否是真实的图像,那就更好了。
答案 4 :(得分:1)
php.net的例子:
if (exif_imagetype('image.gif') != IMAGETYPE_GIF) {
echo 'The picture is not a gif';
}
这也是直接来自我链接的php.net页面:
*如果函数exif_imagetype()不可用; 您可以尝试以下解决方法:*
if ( ! function_exists( 'exif_imagetype' ) ) {
function exif_imagetype ( $filename ) {
if ( ( list($width, $height, $type, $attr) = getimagesize( $filename ) ) !== false )
{
return $type;
}
return false;
}
}