PHP 檔案上傳:確保檔案類型和大小限制
在 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"] 程式碼無法使用正確的邏輯來驗證檔案類型。它不檢查 MIME 類型,而是依賴檔案副檔名,這是不可靠的。此外,大小驗證不適用於這兩個檔案。
為了修正這些問題,這裡有一個修改後的程式碼片段,它使用 MIME 類型並正確檢查兩個檔案大小:
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"] 此程式碼首先檢查檔案的 MIME 類型是否包含在允許的清單中。如果是,則它會驗證兩個檔案大小是否在指定限制內。這可確保僅接受允許的檔案類型和大小進行上傳。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3