2011-03-20 49 views
0

所以現在我有上傳的文件 - PHP - filerting類型

<?php if (($_FILES["fileToUpload"]["type"] == "image/gif" || $_FILES["fileToUpload"]["type"] == "image/jpeg" || $_FILES["fileToUpload"]["type"] == "image/png") && $_FILES["fileToUpload"]["size"] < 10000000) 
    { 
    move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], 
    "upload/" . $_FILES["fileToUpload"]["name"]); 
    } 
else 
    { 
    echo "Files must be either JPEG, GIF, or PNG and less than 10,000 kb"; 
    } 

?> 

和IM仍然得到else語句。我想我應該擁有一切權利。 。

這裏是從之前的頁面一些HTML ..

<form enctype="multipart/form-data" action="upload.php" method="POST"> 
Please choose a file: <input name="uploaded" type="file" /><br /> 
<input type="submit" value="Upload" /> 
</form> 

但是這不應該是

回答

0

檢查$ _FILES的['type']部分中提供的MIME類型不安全。這是由上傳文件的客戶提供的數據,可以很容易地被顛覆。最好做一個文件類型的服務器端檢查並處理自己的數據,而不是相信客戶端是誠實的:

if ($_FILES['uploaded'] === UPLOAD_ERR_OK) { 
    // file was successfully uploaded 
    $info = getimagesize($_FILES['uploaded']['tmp_name']); 
    if (($info['mime'] != 'image/gif') && ($info['mime'] != 'image/jpeg')) { 
     // not a jpeg 
    } else { 
     // upload went ok, do more processing 
    } 
} else { 
    die("File upload error, code #{$_FILES['uploaded']['error']}"); 
} 
3

您訪問「fileToUpload」的問題,而是你的HTML輸入字段被稱爲「上傳」,因此$ _FILES [「fileToUpload」]爲空...