Heim >Datenbank >MySQL-Tutorial >Warum funktioniert mein PHP-Datei-Upload-Validierungscode nicht richtig?

Warum funktioniert mein PHP-Datei-Upload-Validierungscode nicht richtig?

Barbara Streisand
Barbara StreisandOriginal
2024-11-03 11:55:03663Durchsuche

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

PHP-Datei-Upload: Dateityp- und Größenbeschränkungen sicherstellen

In PHP erfordert die Verarbeitung von Datei-Uploads häufig die Überprüfung von Dateityp- und -größenbeschränkungen. Der bereitgestellte Codeausschnitt versucht, beide Kriterien zu validieren, stößt jedoch auf Probleme. Lassen Sie uns in den Code eintauchen und die Fehler identifizieren.

<code class="php">//check file extension and size
$resume = ($_FILES['resume']['name']);
$reference = ($_FILES['reference']['name']);
$ext = strrchr($resume, ".");
$ext1 = strrchr($reference, ".");</code>

Dieser Code erfasst den Dateinamen und die Erweiterung für beide Dateien. Die nachfolgende Validierungslogik ist jedoch fehlerhaft:

<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>

Der Code verwendet nicht die richtige Logik zur Validierung von Dateitypen. Anstatt den MIME-Typ zu überprüfen, wird auf die Dateinamenerweiterung zurückgegriffen, was unzuverlässig ist. Darüber hinaus wird die Größenüberprüfung nicht auf beide Dateien angewendet.

Um diese Probleme zu beheben, finden Sie hier einen überarbeiteten Codeausschnitt, der MIME-Typen verwendet und beide Dateigrößen korrekt überprüft:

<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>

Dieser Code prüft zunächst, ob die MIME-Typen der Dateien in der Liste der zulässigen Dateien enthalten sind. Wenn dies der Fall ist, wird überprüft, ob beide Dateigrößen innerhalb des angegebenen Grenzwerts liegen. Dadurch wird sichergestellt, dass nur zulässige Dateitypen und -größen zum Hochladen akzeptiert werden.

Das obige ist der detaillierte Inhalt vonWarum funktioniert mein PHP-Datei-Upload-Validierungscode nicht richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn