急!今天面试PHP遇到个问题是在想不出请帮我想出答案以免下次吃亏谢谢 分数可以在家希望详细点的谢谢

2025-03-24 01:28:30
推荐回答(2个)
回答(1):

可以通过getimagesize()函数来判断上传的文件类型,如果是头像文件 会返回这样的一个数组
Array
(
[0] => 331
[1] => 234
[2] => 3
[3] => width="331" height="234"
[bits] => 8
[mime] => image/png
);如果通过getimagesize()函数返回的是这样的一个数组 说明上传的是头像文件。其中索引为2的表示类型
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,你可以通过这个再去限制上传的头像类型。如有不懂的 欢迎继续追问。

回答(2):

用getimagesize来判断上传图片的类型比$_FILES函数的type更可靠   
同一个文件,使用不同的浏览器php返回的type类型是不一样的,由浏览器提供type类型的话,
就有可能被黑客利用向服务器提交一个伪装撑图片后缀的可执行文件。  
    $file=$_FILES['file'];
    if(!empty($file))
    {
        var_dump($file);
        var_dump(getimagesize($file["tmp_name"]));
    }   
?>
看一下打印结果就看出来了;