Getimagesize返回数组而不是布尔值

时间:2015-09-02 11:50:02

标签: php

我在网站上有图片上传表单,允许用户上传他们的图片。现在我试图尽可能地保护它。使用php_image_magician ..

这就是我查看图片(代码的一部分)的地方

for ($i = 0; $i < count($_FILES["user_files"]["name"]); $i++) {
  if ($_FILES["user_files"]["name"][$i] <> "") {

    $image_mime = strtolower(image_type_to_mime_type(exif_imagetype($_FILES["user_files"]["tmp_name"][$i])));

$tempFile =  $_FILES["user_files"]["tmp_name"][$i];
$getImgSize = getimagesize($tempFile);   

    // if valid image type then upload
    if (in_array($image_mime, $valid_image_check, $getImgSize)) {
        ....
        // upload image
    }

Whit image_type_to_mime_type没有问题。现在我为getimagesize添加了这一行,但我在if (in_array($image_mime, $valid_image_check, $getImgSize)) - Warning: in_array() expects parameter 3 to be boolean, array given in收到错误。参数3是$getImgSize

$tempFile =  $_FILES["user_files"]["tmp_name"][$i];
$getImgSize = getimagesize($tempFile); 

var_dump($_FILES["user_files"]["tmp_name"][$i])返回string(14) "/tmp/phpkBZOW3"

表单接受多个图片,这就是为什么for[$i]的原因。这可能是什么问题?

1 个答案:

答案 0 :(得分:0)

你可以这样试试。但正如@Paul所说,检查documentation

for ($i = 0; $i < count($_FILES["user_files"]["name"]); $i++) {
  if ($_FILES["user_files"]["name"][$i] <> "") {
    $image_mime = strtolower(image_type_to_mime_type(exif_imagetype($_FILES["user_files"]["tmp_name"][$i])));

    $getImageFile = getimagesize($_FILES["user_files"]["tmp_name"][$i]);

    if(!empty($getImageFile)){
        echo 'Please ensure you are uploading an image.';
        exit;
    }    

    // if valid image type then upload
    if (in_array($image_mime, $valid_image_check)) {