PHP Workshop: Formulare
PHP Workshop: Formulare.
Formulare in HTML
Das Weiterverarbeiten von HTML-Formularen mit Hilfe eines PHP-Skripts ist eine sehr wichtige, aber glücklicherweise auch sehr einfache Aufgabe. Zur Demonstration definieren wir folgendes HTML-Formular:
<form action="formtest.php" method="post"> Name: <input type="text" name="name"><br> Alter: <input type="text" name="alter"><br> <input type="submit" name="absenden" value="Absenden"> </form>
GET und POST
Statt der Methode POST könnten wir in dem obigen Formular auch die Methode GET verwenden. Doch worin genau liegt der Unterschied?
GET und POST sind die zwei Übertragungsmethoden des HTTP-Protokolls, mit deren Hilfe Dokumente angefordert und Formulardaten an ein PHP-Skript übertragen werden können. Die GET-Methode überträgt die Daten als Teil des URL. Das sieht dann z.B. so aus:
http://www.webserver.cx/beispielskript.php?id=1&name=test
Der URL hat dabei immer folgenden Aufbau: Zuerst kommt die Adresse und der Name des Dokuments oder Skripts. Die zu übertragenden Daten werden durch ein ?
von der eigentlichen Adresse getrennt. Danach kommen dann die Daten, in Form von Key-Value-Pairs. Im obigen Beispiel wird der Variablen id
der Wert 1
und der Variablen name
der Wert test
zugewiesen. Die beiden Key-Value-Pairs werden dabei durch ein &
voneinander getrennt.
Bei der POST-Methode hingegen werden die Daten im HTTP-Header und damit für den User unsichtbar übertragen.
Welche Methode soll ich verwenden?
Jede der beiden Methoden hat bestimmte Vor- und Nachteile. Deshalb kann man nicht einfach eine der beiden für jedes Eingabeformular einsetzen. Deshalb hier nun eine Übersicht, welche Methode für welche Einsatzbereiche am besten geeignet ist:
Einsatzbereich | Methode |
---|---|
Übertragung großer Datenmengen: | POST |
Es werden Vertrauliche Daten übertragen: | POST |
Es soll ein Bookmark auf die Antwortseite angelegt werden können: | GET |
Antwort soll cachebar sein: | GET |
Der User soll möglichst wenig von den internen Abläufen mitbekommen: | POST |
Weiterverarbeiten der Formulardaten
Das Entgegennehmen von Formulardaten ist eine der größten Stärken von PHP. Wo man in vielen anderen Sprachen oftmals noch selbst Hand anlegen musste, um die per Formular übergebenen Daten in die entsprechenden Variablen einzulesen, bekommt man die Formulardaten in PHP auf dem Silbertablett serviert :-) Selbst die Unterscheidung zwischen GET oder POST wird dem Skript abgenommen. Stattdessen überprüft der PHP-Interpreter, ob Daten an das Skript übertragen wurden. Wenn dem so ist, extrahiert er sie aus dem URL bzw. aus dem HTTP-Header, erzeugt entsprechende Variablen und füllt sie mit den übertragenen Daten.
Hier nun ein entsprechendes Skript zu unserem Beispielformular weiter oben (die Quellen gibt's natürlich auch zum Download):
<?php echo "Ihr Name ist $name."; echo "Sie sind $alter Jahre alt."; ?>
Entpacken Sie einfach die Quellen innerhalb ihres Document Root und rufen Sie die Datei form.html auf. Wenn Sie das Formular ausfüllen und auf
klicken, sollten Sie etwa diese Ausgabe erhalten:Ihr Name ist Andreas. Sie sind 17 Jahre alt.