Hauptmenü

Untermenü

PHP/MySQL - Praxistutorial 4 - Das Formular

1. Die Abschnitte

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