PHP 檔案上傳:有效限製檔案類型和大小
在PHP 中,控製檔案上傳並確保特定檔案類型的接受至關重要。一位用戶最近遇到了現有驗證代碼的問題:
<code class="php">//check file extension and size $resume= ($_FILES['resume']['name']); $reference= ($_FILES['reference']['name']); $ext = strrchr($resume, "."); $ext1 = strrchr($reference, "."); if (!(($_FILES["resume"]["type"] == "application/doc") || ($_FILES["resume"]["type"] == "application/docx") || ($_FILES["resume"]["type"] == "application/pdf" )) && (($_FILES["reference"]["type"] == "application/doc") || ($_FILES["reference"]["type"] == "application/docx") || ($_FILES["reference"]["type"] == "application/pdf")) && (($ext == ".pdf") || ($ext == ".doc") || ($ext == ".docx")) && (($ext1 == ".pdf") || ($ext1 == ".doc") || ($ext1 == ".docx")) && ($_FILES["resume"]["size"] < 400000) //accept upto 500 kb && ($_FILES["reference"]["size"] < 400000)) { //stop user } else { // allow files to upload }</code>
據該用戶稱,此代碼允許未經授權的文件類型(例如 TXT)通過,並且不強制執行大小限制。
解決方案:依靠MIME 類型和適當的大小檢查
解決對於這些問題,建議採用更可靠的方法:
<code class="php">function allowed_file(){ //Allowed mime-type files $allowed = array('application/doc', 'application/pdf', 'another/type'); //Validate uploaded file type if(in_array($_FILES['resume']['type'], $allowed) AND in_array($_FILES['reference']['type'], $allowed)){ //Check file size if($_FILES["resume"]["size"] < 400000 AND $_FILES["reference"]["size"] < 400000 ){ //File types and size are accepted, proceed with file processing } } }</code>
說明:
此改進的程式碼使用MIME(多用途互聯網郵件擴充)類型而不是檔案副檔名。 MIME 類型準確地表示文件格式且不易被操縱。此外,它還會獨立檢查履歷和參考文件的文件大小,確保限制得到執行。
以上是如何限制 PHP 檔案上傳的檔案類型和大小?的詳細內容。更多資訊請關注PHP中文網其他相關文章!