Weg 1: Verstecktes Feld
<input type="hidden" name="unsichtbar" value="1234">
Weg 2: Daten an URL anhängen
<form action="zieldatei.php?variable1=value1&variable2=value2">
- Verstecktes Eingabefeld
- Daten an URL anhängen mit $_GET
- Übungen
Inhaltsverzeichnis
Verstecktes Eingabefeld (input type = "hidden")
Ein verstecktes Eingabefeld ist im Formular mit <input type="hidden"> definiert, bleibt für den Benutzer aber unsichtbar und kann nicht bearbeitet werden. Somit können wir - unabhängig von der Eingabe des Nutzers - zusätzliche Daten an den Webserver schicken. Die entsprechenden Daten des versteckten Felds werden im value-Attribut festgelegt:
<h1>Verstecktes Eingabefeld</h1>
<form action="ziel.php" method="POST">
<input type="text" name="normalesFeld"> normales Feld<br>
<input type="hidden" name="versteckt" value="1234"><br>
<input type="submit">
</form>
Nach Klick auf den Submit-Button können wir auf alle Daten aus dem Formular - auch die des versteckten input-Felds - wie gewohnt mit dem $_POST Array zugreifen:
echo $_POST["normalesFeld"];
echo $_POST["versteckt"];
Aber Vorsicht: Auch wenn der Wert des versteckten Felds nicht im Browser visuell angezeigt wird, so kann er doch mittels Seitenquelltext-Ansicht eingesehen werden.
Wozu brauchen wir versteckte Eingabefelder?
Versteckte inputs sind sehr nützlich, wenn wir Daten halten wollen, die wir in mehr als einer PHP-Datei benötigen. Ein Beispiel: Der Nutzer gibt in einem sichtbaren Eingabefeld seinen Namen ein. Die Daten werden an ein erstes PHP-Programm übertragen. Von diesem Programm wird ein weiteres Programm aufgerufen, wo ebenfalls der Name des Benutzers benötigt wird. Durch das versteckte Feld kann der Benutzername vom ersten in das zweite Programm gesendet werden, ohne dass der Benutzer nochmals seinen Namen eingeben muss.
Daten an URL anhängen mit $_GET
Zusätzliche Daten können alternativ auch durch das Anhängen an die URL der Zieladresse gesendet werden. Dazu verwenden wir im action-Attribut des form-Tags folgende Syntax:
<form action="zieldatei.php?name=Dexter&age=37" method="POST">
<input type="submit">
</form>
Wie wir sehen, befindet sich hinter der Zieldatei ein Fragezeichen ? gefolgt von Variablen mit Werten (alles ohne Anführungszeichen). Mehrere Variablen werden durch ein &-Zeichen getrennt.
Sicher ist Ihnen in der Adressleiste Ihres Browsers schon einmal etwas derartiges aufgefallen:
Zugriff auf die gesendeten Daten
Die einzelnen Variablen mit ihren Werten werden auf dem Webserver in einem Array namens $_GET als key und value Paare gespeichert. Auf diese Weise können wir auf sie zugreifen:
echo $_GET["name"]; // Dexter
echo $_GET["age"]; // 37
Sinn und Zweck dieser Art der Datenübermittlung entspricht im Wesentlichen der von versteckten input-Feldern. Auch hier sollte man vorsichtig sein: Da nämlich alle Variablen und Werte in der URL angezeigt werden, empfielt es sich, keine Passwörter oder andere sensible Daten weiterleiten.
Übungen
einfach
Schreiben Sie ein Formular mit zwei versteckten Eingabefeldern. Die Werte sind "C3PO" und "R2D2".
Beim Klick auf den Submit-Button werden die beiden Werte am Bildschirm angezeigt.
mittel
Schreiben Sie ein Formular mit einem sichtbaren Eingabefeld, in das der Nutzer eine Zahl eingeben soll. Beim Absenden des Formulars soll außerdem durch Anhängen an die URL der Zielseite der Zahlenwert 2 angehängt werden.
Errechnen Sie im PHP-Programm der Zielseite das Produkt der beiden Zahlen und geben Sie es am Bildschirm aus.
schwer
Zum Abschluss ein weniger praktischer: Sie haben drei PHP-Dateien: test1.php, test2.php, test3.php.
Das Zusammenspiel der einzelnen Dateien sieht so aus:
- test1.php: Hat ein Formular mit einem input-Feld, in das der Nutzer seinen Namen schreibt und anschließend abschickt.
- test2.php: Hat ein Formular mit einer Radio-Button Gruppe, in dem vier Musik-Genres zur Auswahl stehen: Elektro, Rock, Klassik und Pop.
- test3.php: Begrüßt den Nutzer mit Namen und gibt zum ausgewählten Musikgenre einen entsprechenden Künstlertipp (denken Sie sich Bands oder Künstler aus, die zum Genre passen).
Das Ganze kann in etwa so aussehen: