PHP判断文章是否有图片,PHP如何判断图片是否伪造

有一次把文本文件的后缀名修改为图片的后缀名,然后试着上传到qq头像上,结果报出文件格式错误的错误

520808bdc4a61e4f3083e7aa719c2f84.png

显然程序中只是单纯地判断文件的后缀名无法正确地判断图像的是否是真实的图像。下面给出几个方法来判断图像是否是伪造的。

1.使用getimagesize()方法

getimagesize() 函数用于获取图像大小及相关信息,成功返回一个数组,失败则返回 FALSE 并产生一条 E_WARNING 级的错误信息。

我们写如下代码:

$img = getimagesize("2.jpg");//真实图像

echo '真实图像';

var_dump($img);

$img = getimagesize("3.jpg");//txt类型转换为jpg类型

echo '伪造图像';

var_dump($img);

结果为:524ae65f09dad8dc4c747bf70b11bce9.png

有结果可见如果是真实的图像则返回一个数组,而伪造的图像则返回false。然后我们讨论一下该方法的返回结果:

1、图像的宽度的像素值。

2、图像的高度的像素值。

3、图像的类型,返回的是数字,其中1 = GIF,2 = JPG,3 = PNG,4 = SWF,5 = PSD,6 = BMP,7 = TIFF(intel byte order),8 = TIFF(motorola byte order),9 = JPC,10 = JP2,11 = JPX,12 = JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM

4、宽度和高度的字符串,可以直接用于 HTML 的 标签

5、图像的每种颜色的位数,二进制格式

6、图像的通道值,RGB 图像默认是 3

7、图像的 MIME 信息,此信息可以用来在 HTTP Content-type 头信息中发送正确的信息,如: header(“Content-type: image/jpeg”);

2.使用gd库中的exif_imagetype()函数

该函数读取一个图像的第一个字节并检查其签名。同样运行如下代码:

$img = exif_imagetype("2.jpg");//真实图像

echo '真实图像';

var_dump($img);

$img = exif_imagetype("3.jpg");//txt类型转换为jpg类型

echo '伪造图像';

var_dump($img);

0ca0726b76f9c6835a6360be2021abcf.png

同样经过伪造的图像会返回false。

返回结果与getimagesize()方法返回的数组中的索引 2 的值是一样的这里不再赘述,由于本函数是库函数快得多。

本例为实验性例子,读者可以构造出自己的方法方便调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值