2015-09-02 49 views
-4

我在網站上有圖片上傳表單,允許用戶上傳圖片。現在我試圖儘可能地保護它。使用php_image_magician ..Getimagesize返回數組而不是布爾型

這是我在那裏我檢查圖像(代碼部分)

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 
    } 

白衣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]。這裏有什麼問題?

+0

我不認爲在傳遞參數時有「正確」的順序,或者它有?第一個參數檢查圖像mime,第二個參數檢查'jpeg/png/bmp/etc'和第三個檢查getimagesize .. – John

回答

0

你可以嘗試這樣。但正如@保羅說,檢查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)) { 
+1

謝謝。這很好,我現在看到我的錯誤在哪裏。 – John