2012-08-31 127 views
0

進出口試圖確定圖像的MIME類型:檢查圖像的MIME類型

$image = $_FILES['image']; //code shortened 
function determineImage($imageResource){ 

    $errors = array(); 

    $types = array('gif' => IMAGETYPE_GIF, 
        'jpeg' => IMAGETYPE_JPEG, 
        'png' => IMAGETYPE_PNG, 
        'bmp' => IMAGETYPE_BMP); 


    if (!in_array(exif_imagetype($imageResource['tmp_name']), $types)) { 
     $errors[] = 'Cannot determine mime type'; 
    } 

    if ($imageResource['type'] !== 'image/gif' || 
     $imageResource['type'] !== 'image/jpeg' || 
     $imageResource['type'] !== 'image/pjpeg' || 
     $imageResource['type'] !== 'image/png'){ 
      $errors[] = 'Again cannot determine type'; 
    } 

    return $errors; 

} 

我使用

var_dump(determineImage($image)); 

此回頭率陣列(1){[0] = >串(27) 「同樣不能確定類型」}

然而這樣的:

echo $image['type']; 

剛剛返回:

image/png 

我也得到了使用error_reporting(E_ALL)開啓。任何人都可以弄清楚問題是什麼,我犯了一個愚蠢的錯誤?

回答

0

的代碼是一個總的隨機由

if ($imageResource['type'] !== 'image/gif' AND 
    $imageResource['type'] !== 'image/jpeg' AND 
    $imageResource['type'] !== 'image/pjpeg' AND 
    $imageResource['type'] !== 'image/jpg' ... 

,而不是OR

+0

的代碼被縮短的方式(支票沒有意義可言)

,我編輯別人的代碼。謝謝這是AND。現在應該睡覺了。 –

+0

xD你需要一個良好的睡眠 – skyline26