我正在编写一个脚本来调整大小并裁剪上传的图像。
所有有效文件都可以... 但是我的一些访问者正在尝试上传无效的访问者...例如文件扩展名为 jpg ,但实际上是 tiff 文件..上传文件的扩展名看起来 gif ,但在其exif细节中写道'它是一个jpg '等等..
你可以想象,imagecreatefromXX()函数在这种情况下都是错误的(它不是一个有效的jpg等)..
你有什么想法,我怎么能解决这个问题?
我该如何修改我最近的代码?
switch($type) {
case 'gif':
$img = imagecreatefromgif($source);
break;
case 'jpg':
case 'JPEG':
case 'jpeg':
$img = imagecreatefromjpeg($source);
break;
case 'png':
$img = imagecreatefrompng($source);
break;
}
答案 0 :(得分:1)
你最好的选择可能是修改设置$ type的代码,而不是你共享的代码(虽然John Conde建议让默认情况好一些),并使用类似exif_imagetype的东西(你的问题建议可能已经在发挥作用)来确定类型,而不是信任扩展(在编写文件时你甚至可能想要改变为适当的类型):扩展是用户提供的数据,因此,最少可能准确和/或有用。
e.g。
$type = exif_imagetype($source);
switch ($type){
case IMAGETYPE_GIF:
$img = imagecreatefromgif($source);
break;
case IMAGETYPE_JPG:
$img = imagecreatefromjpeg($source);
break;
case IMAGETYPE_PNG:
... etc ...
default:
//Fail Gracefully
}