2013-02-14 111 views
0

我試圖上傳的圖像文件。PHP:文件上傳未驗證的文件類型

我收到的文件名和確定,沒有錯誤,但由於某些原因,當if/else語句達到我的文件類型:

if($filetype != 'image/jpeg' || $filetype != 'image/jpg' || $filetype != 'image/png' || $filetype != 'image/gif') { 
//ERROR - NOT CORRECT TYPE 
} 
else { 
//CORRECT FILE TYPE..CONTINUE 
} 

將alsways說,文件類型是錯誤的。香港專業教育學院嘗試了幾個不同的文件類型不同大小無濟於事的。

我完整的代碼:

if(!$_FILES['photo'.$i]['error']) 
    { 
    echo "<br />NO ERRORS FOUND"; 

     //FILE TYPE CHECKER 
     $filetype = $_FILES['photo'.$i]['type']; 
     echo "<br />FILE TYPE: " . $filetype; 

     if($filetype != 'image/jpeg' || $filetype != 'image/jpg' || $filetype != 'image/png' || $filetype != 'image/gif') { 
     $valid_file = false; 
     $message = 'Wrong file type. Please only upload jpg, jpeg, gif or png files'; 
     }//END FILE CHECKER IF 

     else { 
     echo "<br />FILE TYPE OK"; 
     }//END FILE TYPE CHECK ELSE 

    } 

echo "<br />FILE TYPE: " . $filetype;顯示我上傳了正確的文件類型(例如:文件類型:圖像/ PNG),只是if語句犯規反應...

有人會知道爲什麼會發生這種情況嗎?

回答

1

使用& &不||

if($filetype != 'image/jpeg' && $filetype != 'image/jpg' && $filetype != 'image/png' && $filetype != 'image/gif') { 
//ERROR - NOT CORRECT TYPE 
} 

它能夠更好地使用PHP File Info你的邏輯也更改爲:

$allowed_mimes = array('image/jpeg', 'image/jpg'); 
if(!in_array($filetype, $allowed_mimes)){ 
//eeror 
} 
+0

+1第二部分答案:) – 2013-02-14 07:00:44

0

變化||到& & - 如果是||它永遠是真的。

if($filetype != 'image/jpeg' && $filetype != 'image/jpg' && $filetype != 'image/png' && $filetype != 'image/gif') {