Rumah  >  Artikel  >  pangkalan data  >  Mengapa Kod Pengesahan Muat Naik Fail PHP Saya Tidak Berfungsi dengan Betul?

Mengapa Kod Pengesahan Muat Naik Fail PHP Saya Tidak Berfungsi dengan Betul?

Barbara Streisand
Barbara Streisandasal
2024-11-03 11:55:03568semak imbas

Why Is My PHP File Upload Validation Code Not Working Correctly?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn