php getimagesize失效,php – GetImageSize()应该没有返回FALSE

本文探讨了在PHP中如何确保上传文件确实是图像,而非PHP重命名文件的技巧。作者分享了使用getimagesize函数失败的原因,并提供了临时保存文件并检查大小或类型的方法。还介绍了如何使用getimagesizeReal函数进行更严格的图像验证。
摘要由CSDN通过智能技术生成

在这里处理一点上传脚本.我正在尝试检查上传的图像是否真的是图像,而不仅仅是重命名的PHP文件.

发布脚本后,我可以打印数组

foreach ($_FILES['images']['name'] as $key => $value){

print_r(getimagesize($_FILES['images']['tmp_name'][$key]));

这很好,所以它不会返回false.但即使我上传的文件不是图像,也不会给出错误.它根本不返回任何内容,我的脚本的其余部分只是像图像一样处理事物.

谁能告诉我我做错了什么?

解决方法:

上传

你不能直接在$_FILES [‘images’] [‘tmp_name’] [$key]上使用getimagesize ..你需要先将它复制到你的系统才能使用它

暂时使用$_FILES [‘images’] [‘size’] [$key]

要么

move_uploaded_file($_FILES['images']['tmp_name'][$key], $destination);

print_r(getimagesize($destination));

假图像

请注意,$_FILES [‘images’] [‘type’] [$key]可以伪造

使用伪图像标题

file_put_contents("fake.png", base64_decode('iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABGdBTUEAALGPC/xhBQAAAAZQTFRF

AAAAVcLTfgAAAAF0Uk5TAEDm2GYAAAABYktHRACIBR1IAAAACXBIWXMAAAsSAAALEgHS3X78AAAAB3RJTUUH0gQCEx05cq

KA8gAAAApJREFUeJxjYAAAAAIAAUivpHEAAAAASUVORK5CYII='));

正在上传fake.png

array

'name' =>

array

0 => string 'fake.png' (length=8)

'type' =>

array

0 => string 'image/png' (length=9)

'tmp_name' =>

array

0 => string 'C:\Apache\xampp\tmp\php44F.tmp' (length=30)

'error' =>

array

0 => int 0

'size' =>

array

0 => int 167

验证图像

用法

var_dump ( getimagesizeReal ( "fake.png" ) );

使用的功能

function getimagesizeReal($image) {

$imageTypes = array (

IMAGETYPE_GIF,

IMAGETYPE_JPEG,

IMAGETYPE_PNG,

IMAGETYPE_SWF,

IMAGETYPE_PSD,

IMAGETYPE_BMP,

IMAGETYPE_TIFF_II,

IMAGETYPE_TIFF_MM,

IMAGETYPE_JPC,

IMAGETYPE_JP2,

IMAGETYPE_JPX,

IMAGETYPE_JB2,

IMAGETYPE_SWC,

IMAGETYPE_IFF,

IMAGETYPE_WBMP,

IMAGETYPE_XBM,

IMAGETYPE_ICO

);

$info = getimagesize ( $image );

$width = @$info [0];

$height = @$info [1];

$type = @$info [2];

$attr = @$info [3];

$bits = @$info ['bits'];

$channels = @$info ['channels'];

$mime = @$info ['mime'];

if (! in_array ( $type, $imageTypes )) {

return false; // Invalid Image Type ;

}

if ($width <= 1 && $height <= 1) {

return false; // Invalid Image Size ;

}

if($bits === 1)

{

return false; // One Bit Image .. You don't want that ;

}

return $info ;

}

标签:php,validation,getimagesize

来源: https://codeday.me/bug/20190926/1819556.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值