Upload von Dateien via PHP
Fehlerbehandlung
- Sichere Uploads per PHP - Bildergalerie & Co.
- Fehlerbehandlung
- Datei-Handling
- Dateigrößen und Schreibrechte
Deshalb muss das Skript sie in den gewünschten Ordner verschieben. Das erledigt Version 2 unseres Skriptes, die zugleich auch eine einfache Fehlerbehandlung enthält.
In Zeile 13 des Skriptes wird das error_reporting eingeschaltet, was das Debugging erleichtert. Dann definieren wir die Variable $maxsize (Zeile 16), über die wir später die Größe der hochladbaren Dateien begrenzen können. Die Variable $upload_dir (Zeile 19) zeigt auf das Unterverzeichnis uploads des Ordners, in dem das Upload-Skript liegt.
Diesen Ordner müssen Sie auf dem Server anlegen und dem Webserver den Schreibzugriff erlauben. Das Skript funktioniert nur mit relativen Pfadangaben.
Als Nächstes überprüfen wir, ob das Formular schon abgeschickt oder die Webseite abgerufen wurde (Zeile 22). Im ersten Fall wird der Fehlercode in der Variable $uploaded_file['error'] abgelegt und anschließend verarbeitet:
Ist kein Fehler aufgetreten, speichert das Skript die temporäre Datei im Verzeichnis $upload_dir ab. Dazu nutzen wir die PHP-Funktion move_uploaded_file, die für solche Transfers sicherheitstechnisch optimiert wurde:
29: $dateiname =
$uploaded_fi le
['name'];
30: // Kein Fehler: verschieben
31: move_uploaded_fi le($uploaded_
fi le['tmp_name'],$upload_dir .
$dateiname);
32: echo "<p><a href='" . $upload_dir
. $dateiname . "'>Datei ansehen</a></p>";
In Zeile 32 erzeugt das Skript einen Link, über den der Benutzer die Datei ansehen und wieder herunterladen kann.
Dateigrößenbeschränkungen
Der Umgang mit Dateien unter Beachtung von Größenbeschränkungen ist eine der wesentlichen Aufgaben des Upload-Skriptes. Leider bietet PHP keine Möglichkeit, die Dateigröße vor dem vollständigen Upload zu checken. Das führt dazu, dass Nutzer eine Datei mit gewissem Zeitaufwand hochladen, um anschließend festzustellen, dass der Server sie wegen ihrer Größe abweist.
Um die Zahl solcher Usability-Unfälle zu minimieren, zeigen wir die maximale Dateigröße in Version 3 unseres Skriptes im Upload-Formular an. Dazu vergleichen wir in den Zeilen 31 bis 36 die verschiedenen Größenbeschränkungen, die für Uploads greifen. Seitens der PHP-Konfiguration (php.ini) sind das upload_max_ filesize und post_max_size.

Außerdem haben wir selbst die Variable $maxsize eingeführt. Das Skript ermittelt den kleinsten der drei Werte und speichert diesen in der Variable $maxsize ab. Das bedeutet: Selbst wenn in Zeile 16 $maxsize fälschlich größer definiert wird als es die von der php.ini vorgegebenen Parameter erlauben, passt das Skript die Variable automatisch nach unten an.
Außerdem müssen Sie das Skript nicht angleichen, wenn Sie es auf unterschiedlich konfigurierten Servern einsetzen. Vielmehr erscheint die korrekte maximale Dateigröße automatisch im Upload-Formular.
Am Rande: Die Funktion BinarySuffixKiller wandelt Größenangaben der php.ini ("G" für Gigabyte, "M" für Megabyte und "K" für Kilobyte) korrekt um und lässt sich auch in anderen Projekten wiederverwenden.
Erweitererte Fehlerbehandlung
Die rudimentäre Fehlerbehandlung aus Version 2 haben wir in Version 3 erweitert:
43: if ($uploaded_fi le['error'] == 1){
44: echo "<h1>Fehler: Datei zu
gross</h1>";
45: }elseif($uploaded_file['error']
== 3){
46: echo "<h1>Fehler: Datei unvollstaendig</
h1>";
47: }elseif($uploaded_file['error']
== 4){
48: echo "<h1>Fehler: Datei wurde
nicht übermittelt</h1>";
49: }elseif($uploaded_file['size'] >
$maxsize){
50: echo "<h1>Fehler: Datei zu gross</h1>";
Gutscheine
-
Uber Eats
5€ mit dem Uber Eats Gutschein sparen Zum Gutschein
bis 30.09.2023+ bis zu 2,50€ Cashback -
eufy
Exklusiver 15% eufy Gutschein auf ALLES Zum Gutschein
bis 01.10.2023+ bis zu 8,0% Cashback(statt40,0€) -
Berliner Kaffeerösterei
Exklusiver 10% Gutschein Code auf ALLES Zum Gutschein
bis 08.10.2023+ bis zu 8,0% Cashback(statt25,0€) -
Geero
EXKLUSIV: 6% Gutschein auf alle Geero2 Modelle Zum Gutschein
bis 27.09.2023+ bis zu 3,0% Cashback(statt15,0€) -
HelloFresh
Bis zu 120€ + GRATIS Versand der 1. Box mit den HelloFresh Rabattcodes Zum Gutschein
bis 31.01.2024+ bis zu 4,00€ Cashback -
Parship
Parship Angebot: 20% mit dem Gutschein sparen Zum Gutschein
bis 30.09.2023