Upload von Dateien via PHP

Sichere Uploads per PHP - Bildergalerie & Co.

Bildergalerie, Download-Ecke, CMS - kaum eine Website kommt ohne Upload-Funktion für Dateien aus. Wir zeigen, wie Sie sichere Uploads mit PHP realisieren.

Inhalt
  1. Sichere Uploads per PHP - Bildergalerie & Co.
  2. Fehlerbehandlung
  3. Datei-Handling
  4. Dateigrößen und Schreibrechte

© Archiv

Datei Suche ordner

Meist sind es nicht die massenweisen Transfers von Dateien, die über Web- Formulare abgewickelt werden. Dafür gibt es mit FTP und vor allem SCP effizientere Methoden, die bis hin zur Benutzerauthentifizierung alle wichtigen Funktionen mitbringen.Im Web sind es regelmäßig die von technisch wenig versierten und nicht immer authentifizierten Benutzern durchgeführten Uploads einzelner Dateien, die per PHP empfangen und verarbeitet werden müssen. Mal ist es die Bildergalerie, die mit neuem Material zu bestücken ist. Ein andermal wird eine Upload-Funktion als Teil eines selbst entwickelten CMS benötigt.

Wir führen Sie durch alle Schritte, die notwendig sind, um solche Uploads mit PHP zu realisieren. Das beginnt beim Upload-Formular für die Website und erstreckt sich über die skriptgesteuerte Bearbeitung der Datei auf dem Server bis hin zu Tipps für die Dateiausgabe.

Den gesamten Code zum Workshop finden Sie im Leser-Service hier. Bevor Sie loslegen, entpacken Sie die in der Zip-Datei enthaltenen Dateien in ein Verzeichnis auf Ihrem Webserver.

Sofern dieser mit dem Internet verbunden ist, sollten Sie das Verzeichnis per Passwort vor unbefugten Zugriffen schützen, denn erst in der letzten Version enthält unser Upload-Skript alle sicherheitstechnisch notwendigen Schutzmaßnahmen.

Empfangsbereit

In Version 1 ist unser Skript ganz kurz:

6: <?php
7: if($_FILES){
8: echo "<pre>";
9: print_r($_FILES);
10: echo "</pre>";
11: }
12: ?>
13: <form method="post" enctype=
"multipart/form-data">
14: Datei: <input type="fi le" name=
"eins"><br>
15: <input type="submit" value=
"Dateien hochladen">
16: </form>

Über das Formular in den Zeilen 8 bis 11 kann der Benutzer eine Datei auf der Festplatte auswählen und an den Server schicken. Gemäß HTTP-Spezifikation muss das Formular dabei per post verschickt werden, während die HTML-Spezifikation den Wert für enctype vorgibt.

Das Ergebnis des Uploads wird im Array $_FILES gespeichert, das beispielsweise so aussieht:

1: Array
2: (
3: [eins] => Array
4: (
5: [name] => ip-adressen.txt
6: [type] => text/plain
7: [tmp_name] => C:\xampp\tmp\php3DA.
tmp
8: [error] => 0
9: [size] => 964
10: )
11: )

Der Key "eins" bildet den Namen von <input type="file"> ab. Wer mehrere Dateien in einem Rutsch empfangen will, muss also lediglich mehrere <input>-Elemente im Formular platzieren und diese mit unterschiedlichen Namen versehen. Nach dem Upload enthält $_FILES dann entsprechend viele Elemente, die mit den üblichen Array-Funktionen bearbeitet werden können.

Die Variable name enthält den Namen der Datei, unter der diese auf der Festplatte des Nutzers zu finden ist. Auf dem Webserver lautet der Dateiname zunächst anders, denn der Server speichert die Datei nur temporär und vergibt dabei einen eigenen Namen.

Dieser steht in tmp_name. type spiegelt den vom Browser übermittelten MIME-Typ der Datei wieder, error gibt Fehlercodes zurück und size enthält die Größe der Date in Bytes.

Mehr lesen

Chronologische Liste und Netflix-Links -

Neuerscheinungen in der Übersicht -

Vorschau auf Film- und Serien-Highlights -

Mehr zum Thema

Webdesign

Adobe Illustrator wird im Webdesign immer beliebter. Wie Sie das Tool richtig einsetzen, erfahren Sie hier.
Facebook

Was sind die Implikationen für Unternehmen und Endanwender bei Facebooks neuer Suche Graph Search?
Online-Recht

Allgemeine Geschäftsbedingungen liest sich niemand gerne durch. Sie sind jedoch notwendig und äußerst sinnvoll. Worauf sie achten sollten.
Online-Recht in der Cloud

Dateien werden immer häufiger in der Cloud bereitgestellt. Rechtlich ist das jedoch durchaus problematisch. Wir klären über das Urheberrecht in der…
E-Commerce-Logistik

Für den Erfolg eines Online-Shops sind zahlreiche Faktoren verantwortlich. Neben Produktvielfalt und Darstellung der Waren gehört auch die Logistik.