PHP/MySQL - Praxistutorial 4 - Das Formular
1. Die Abschnitte
- Überblick
- Das Formular
- Zugriffsrechte
- Grundsätzliches
- Der Upload
- Rechte setzen
- Dateien auslesen
- Dateien anlegen
- Dateien löschen
2. Grundsätzliches
Wenn man Dateien per HTML-Formular auf einen Webserver hochladen will, benötigt man eine Angabe im <form>
-Tag, die
ansonsten überflüssig ist. Dabei handelt es sich um das Attribut enctype
, das den Wert multipart/form-data
haben muss. Ohne diesen Zusatz werden keine Dateien übertragen.
<form action="index.php" method="post" enctype="multipart/form-data">
Noch ein Attribut
Im <form>
-Tag besteht laut Spezifikation noch die Möglichkeit, den MIME-Typ anzugeben. Das heißt, dass der Upload der Datei verweigert wird, wenn sie nicht dem gewünschtem Ergebnis
entspricht. Allerdings kann man sich darauf leider nicht verlassen, da in so einem Fall jeder Browser anders reagiert.
<!-- es werden nur nackte Textdateien akzeptiert -->
accept="text/plain"
3. Das Upload-Feld
Dabei handelt es sich um ein <input>
-Element, das beim Attribut type
dem Wert file
bekommt.
<input type="file" name="datei">
Man erkennt das Upload-Feld an einem zusätzlichen Button mit der Beschriftung "Durchsuchen". Das ist allerdings abhängig von der Sprachversion des Browsers.
Datenbegrenzung
Immer wieder findet man einen Hinweis auf das Attribut maxlength
, mit dem man dem Browser die maximale Größe der
hochzuladenden Datei zu überprüfen.
maxlength="1048576"
Vergesst das ganz schnell wieder. Darum schert sich kein Browser. Außerdem ist es meines Wissens nach kein Teil von HTML 4/XHTML 1, sondern viel älter.
4. Tatsächliche Datenbegrenzung
Da man leider nie weiß, ob da gerade eine bildungsresistente Evolutionsbremse versucht, die 10 MB großen Bilder vom letzten "Ballermann"-Urlaub hochzuladen, bietet PHP die Möglichkeit, über ein verstecktes Feld die maximale Dateigröße zu begrenzen.
<input type="hidden" name="MAX_FILE_SIZE" value="1048576" />
Wichtig ist der Wert des name
-Attributes. Der muss MAX_FILE_SIZE
sein. Und nichts anderes. Achtet auch auf die
Großschreibung. Im value
steht dann die Größe, angegeben in Byte. In diesem Fall ist also ein Upload von 1 Megabyte erlaubt.
Wichtig
Allerdings kann man sich darauf auch nicht hundertprozentig verlassen. Deshalb sollte man das auf jeden Fall noch mal serverseitig überprüfen.
Serverseitige Beschränkungen
Hinsichtlich der Dateigröße gibt es serverseitig schon eine Beschränkung, nennt sich upload_max_filesize
und
steht in der php.ini
. Die Größe findet man ganz einfach heraus, indem man eine PHP-Datei mit dem Eintrag
<? phpinfo();?>
auf den Server lädt und aufruft. Der Standartwert liegt meines Wissens nach zwischen
2 und 8 MB. Es gibt aber noch etwas Anderes zu Bedenken. Nämlich die Einstellung für max_execution_time
in der
php.ini
. Dabei handelt es sich um die Anzahl von Sekunden, die maximal für die Bearbeitung des Scriptes zur
Verfügung stehen. Standardwert ist hier 30. Dauert der Upload der Datei länger, wird das Script beendet und es gibt eine
Fehlermeldung.
5. Und nun
... baut ihr euch das Formular in der index.php
zusammen und wir können loslegen. Aber vorher geht es noch um ein paar
grundsätzliche Dinge.
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt