Rumah > Artikel > pangkalan data > Mengapa Kod Pengesahan Muat Naik Fail PHP Saya Tidak Berfungsi dengan Betul?
Muat Naik Fail PHP: Memastikan Sekatan Jenis dan Saiz Fail
Dalam PHP, pengendalian muat naik fail selalunya memerlukan pengesahan jenis fail dan sekatan saiz. Coretan kod memberikan percubaan untuk mengesahkan kedua-dua kriteria tetapi menghadapi masalah. Mari kita teliti kod dan kenal pasti ralat.
<code class="php">//check file extension and size $resume = ($_FILES['resume']['name']); $reference = ($_FILES['reference']['name']); $ext = strrchr($resume, "."); $ext1 = strrchr($reference, ".");</code>
Kod ini menangkap nama fail dan sambungan untuk kedua-dua fail. Walau bagaimanapun, logik pengesahan berikutnya adalah cacat:
<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>
Kod gagal menggunakan logik yang betul untuk mengesahkan jenis fail. Daripada menyemak jenis MIME, ia bergantung pada sambungan nama fail, yang tidak boleh dipercayai. Selain itu, pengesahan saiz tidak digunakan pada kedua-dua fail.
Untuk membetulkan isu ini, berikut ialah coretan kod disemak yang menggunakan jenis MIME dan menyemak kedua-dua saiz fail dengan betul:
<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>
Kod ini mula-mula menyemak sama ada jenis MIME fail disertakan dalam senarai yang dibenarkan. Jika ya, ia kemudian mengesahkan jika kedua-dua saiz fail berada dalam had yang ditentukan. Ini memastikan bahawa hanya jenis dan saiz fail yang dibenarkan diterima untuk dimuat naik.
Atas ialah kandungan terperinci Mengapa Kod Pengesahan Muat Naik Fail PHP Saya Tidak Berfungsi dengan Betul?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!