Formulare mit GET und POST auswerten
Folien
Falls keine PDF-Präsentation zu sehen ist: Direktdownload der PDF-Präsentation
Das im Video und unten verwendete Beispielformular finden Sie hier als Download: 200-phpformular-EIS-beispiel-index.php.zip
Beispiel für Formular:
<form action="ergebnis.php" method="post">
<div>
<label for="idSorte">Sorte?</label>
<input type="text" id="idSorte" name="eissorte" placeholder="Eissorte eingeben">
</div>
<div>
<input type="radio" id="idBecher" value="Becher" name="auswahl">
<label for="idBecher">Becher</label>
<br>
<input type="radio" id="idWaffel" value="Waffel" name="auswahl">
<label for="idWaffel">Waffel</label>
</div>
<div>
<input type="submit" value="Absenden" name="submitknopf" id="idSubmit">
</div>
</form>
method = "get" – Formulardaten werden an URL angehängt
method = "post" – Formulardaten werden direkt übertragen
Übertragen wird ein assoziatives Array, wobei das Attribut name als Schlüssel verwendet wird:
$_POST['eissorte'] (enthält den Wert, den der User ins Textfeld eingegeben habt, bspw. “Erdbeer”)
$_GET['eissorte'] (dito)
D.h.: Das Attribut ‘name’ gibt den Schlüssel an, das Attribut ‘value’ den Wert – damit enthält $_POST['name'] den Wert value.
Auf der ergebnis.php können diese Variablen verwendet werden, z.B.
<?php
echo "Dein Lieblingseis ist $_POST[eissorte]!";
?>
bzw.
<?php
$eis = $_POST['eissorte'];
// hier könnte auch $_POST[eissorte]; stehen
echo "Dein Lieblingseis ist $eis!";
?>
Anführungszeichen um den Schlüssel funktionieren nur dann, wenn die Variable außerhalb von Anführungszeichen verwendet wird (im ersten Beispiel funktioniert $_POST['Lieblingseis'] also nicht.
Auswertung der Radiobuttons
…funktioniert analog zum bisher Beschriebenen. Wir benutzen immer das name-Attribut des Formularelements:
<?php
echo "Sie essen gerne $_POST[eissorte] aus der/dem $_POST[auswahl]."
?>
Ist GET oder POST besser?
Wir verwenden vorläufig immer POST, da wir u.U. längere Inhalte von textarea-Feldern übertragen wollen oder Passwörter verwenden. Allerdings hat auch GET Vorteile: Fehler sind leichter zu erkennen, da in der URL der gesamte Formularinhalt übermittelt wird.
Die Verwendung von GET hat Sicherheitsimplikationen, wenn bspw. über das Formular Werte übertragen werden, die nicht als Referer in den Logs auftauchen sollen - wenn z.B. ein Passwort über das Formular übertragen wird.
Übrigens: File-Transfers können nur per POST durchgeführt werden.
Übungen
Zusätzliche Dateien (Bilder, Klassendiagramme, HTML-Vorlagen) finden Sie in der Materialsammlung. Diese Übungen können Sie als txt-Datei herunterladen.
Übungen: PHP - Formulare mit get/post auswerten
1) Einfaches Formular 1
Erstellen Sie ein Formular, wo der User seine Haarfarbe einträgt. Nach dem Absenden erscheint die Ausgabe "Ihre Haarfarbe ist " + eingegebene Haarfarbe.
2) Einfaches Formular 2
Erweitern Sie das Formular der vorigen Übung so, dass der User zusätzlich per Radiobutton angeben kann, ob seine Haare gefärbt sind oder nicht. Diese Eingabe wird bei der Ausgabe berücksichtigt.
3) Einfache Formulare
Erstellen Sie zwei PHP-Seiten mit jeweils einem Formular, durch das die Haarfarbe abgefragt wird.
Erste Seite: Haarfarbe wird über ein Textfeld abgefragt, speichern unter "haarfarbe_text.php"; action = "ergebnis_haarfarbe.php"
Zweite Seite: Haarfarbe wird über ein Dropdownmenü (select) abgefragt, speichern unter "haarfarbe_dropdown.php"; action = "ergebnis_haarfarbe.php"
Nach Absenden des jeweiligen Formulars soll die Ausgabe "Hallo! Ihre Haarfarbe ist: xy!" erfolgen.
4) Einfachen Rechner erstellen
Erstellen Sie einen Rechner, der folgenden Anforderungen genügt:
- In zwei Felder wird jeweils eine beliebige Zahl eingegeben (im Folgenden genannt [zahl1] und [zahl2].
- Nach Klick auf den Knopf "berechnen" erhält man die Ausgabe
Hallo! Wenn man [zahl1] und [zahl2] addiert, erhält man [Summe zahl1+zahl2]. Wenn man die beiden Zahlen multipliziert, erhält man [Produkt zahl1+zahl2].
5) Bruttopreis-Rechner erstellen
Erstellen Sie ein Programm, das aus einem eingegebenen Nettobetrag den Bruttobetrag (d.h. zzgl. MwSt.) berechnet.
6) Zeugnisdurchschnitt berechnen
Erstellen Sie ein Programm, das Ihren Zeugnisdurchschnitt berechnet. Beschränkung auf wenige Fächer ok.
Weitere Übungen in den Verzeichnissen:
- 200-phpformular-sternzeichen
- 200-phpformular-tage-minuten