我使用下面的代码来测试上传的文件是否确实是图像。(下面的代码与使用ImageMagick时在php网站上发现的OOP风格不同,因为我在共享服务器上,这是使用ImageMagick和实际脚本时提供的指示,将涉及重新路由用户,取消链接或删除上传的文件等,所以请不要批评下面的代码,我只是想停留在使用IMAGICK IDENTIFY作为图像验证工具的概念。)
<?php
if(!exec('/usr/bin/identify /home/user/public_html/joteco_test_folder/thisisanimage.jpg'))
{
echo "NOT AN IMAGE";
}
else
{
echo exec('/path/here/identify /path/here/thisisanimage.jpg');
}
?>
我尝试了下面的代码:
用photoshop cs6制作的。jpg格式。(它传递并重复以下细节"810x203 810x203+0+0 8-bit DirectClass 32.4KB 0.000u 0:00.000")
txt文件。(失败,提示"NOT AN IMAGE")
用记事本制作的。jpg文件,上面写着"我是一个图像"。(失败,提示"NOT AN IMAGE")
(在我看来,我认为这是一个成功,但我知道黑客做的比我在测试#3中做的更多。)
如此!您认为这是否足以作为安全检查来验证上传的文件是否确实是图像?或者ImageMagick中是否有其他工具可以用于此目的?你的想法呢?
(请。不要建议或提及(MIME | EXTENSION | GETIMAGESIZE),因为它在stackoverflow中被反复提到,是验证上传文件的无用方法。谢谢你)
这应该能帮到你。
$im = @imagecreatefromjpeg($imgname);
if(!$im)
{
return false;
}
else
{
imagedestroy($im);
return true;
}
除了检查它是否为图像之外,对于不完整(部分上传)的图像