Heim  >  Artikel  >  Datenbank  >  Wie kann ich Dateitypen und -größe beim Hochladen von PHP-Dateien einschränken?

Wie kann ich Dateitypen und -größe beim Hochladen von PHP-Dateien einschränken?

Susan Sarandon
Susan SarandonOriginal
2024-11-01 04:58:02704Durchsuche

How to Restrict File Types and Size in PHP File Uploads?

PHP-Datei-Upload: Dateitypen und -größe effizient einschränken

In PHP ist die Kontrolle von Datei-Uploads und die Sicherstellung der Akzeptanz bestimmter Dateitypen von entscheidender Bedeutung . Ein Benutzer hatte kürzlich Probleme mit seinem vorhandenen Validierungscode:

<code class="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"] < 400000) //accept upto 500 kb
&&  ($_FILES["reference"]["size"] < 400000)) {

//stop user
} else {
// allow files to upload
}</code>

Nach Angaben des Benutzers ließ dieser Code nicht autorisierte Dateitypen (z. B. TXT) passieren und setzte die Größenbeschränkung nicht durch.

Lösung: Sich auf MIME-Typen und ordnungsgemäße Größenprüfungen verlassen

Um diese Probleme anzugehen, wird ein robusterer Ansatz empfohlen:

<code class="php">function allowed_file(){

//Allowed mime-type files
$allowed = array('application/doc', 'application/pdf', 'another/type');

//Validate uploaded file type
if(in_array($_FILES['resume']['type'], $allowed) AND in_array($_FILES['reference']['type'], $allowed)){

//Check file size
if($_FILES["resume"]["size"] < 400000 AND $_FILES["reference"]["size"] < 400000 ){

//File types and size are accepted, proceed with file processing
}
}
}</code>

Erklärung :

Dieser verbesserte Code verwendet MIME-Typen (Multipurpose Internet Mail Extension) anstelle von Dateierweiterungen. MIME-Typen stellen Dateiformate genau dar und sind weniger anfällig für Manipulationen. Darüber hinaus prüft es unabhängig voneinander die Dateigröße für Lebenslauf- und Referenzdateien und stellt so sicher, dass das Limit eingehalten wird.

Das obige ist der detaillierte Inhalt vonWie kann ich Dateitypen und -größe beim Hochladen von PHP-Dateien einschränken?. 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