PHP 檔案上傳:確保檔案類型和大小限制
在 PHP 中,處理檔案上傳通常需要驗證檔案類型和大小限制。提供的程式碼片段嘗試驗證這兩個標準,但遇到了問題。讓我們深入研究程式碼並找出錯誤。
<code class="php">//check file extension and size $resume = ($_FILES['resume']['name']); $reference = ($_FILES['reference']['name']); $ext = strrchr($resume, "."); $ext1 = strrchr($reference, ".");</code>
此程式碼擷取兩個檔案的檔案名稱和副檔名。然而,後續的驗證邏輯有缺陷:
<code class="php">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>
程式碼無法使用正確的邏輯來驗證檔案類型。它不檢查 MIME 類型,而是依賴檔案副檔名,這是不可靠的。此外,大小驗證不適用於這兩個檔案。
為了修正這些問題,這裡有一個修改後的程式碼片段,它使用MIME 類型並正確檢查兩個檔案大小:
<code class="php">function allowed_file() { $allowed = array('application/doc', 'application/pdf', 'application/docx'); if (in_array($_FILES['resume']['type'], $allowed) && in_array($_FILES['reference']['type'], $allowed)) { if ($_FILES["resume"]["size"] < 400000 && $_FILES["reference"]["size"] < 400000) { // Begin file upload here... } } }</code>
此程式碼首先檢查檔案的MIME 類型是否包含在允許清單中。如果是,則它會驗證兩個檔案大小是否在指定限制內。這可確保僅接受允許的檔案類型和大小進行上傳。
以上是為什麼我的 PHP 檔案上傳驗證程式碼無法正常運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!