Beim Formularfeldtyp hidden handelt es sich um ein verstecktes input-Feld, das für den Betrachter nicht sichtbar ist. Dennoch kann in ihm eine Variable gespeichert und auch übergeben werden. Genau darin besteht die Aufgabe eines versteckten Feldes, nämlich im Hintergrund verborgen Daten zu übergeben.
Datei einkauf.html
<html> <head> <title>Datenübergabe mittels HIDDEN-Feld</title> </head> <body> Heute kosten alle Artikel 5,99 Euro <form action="kaufen.php" method="POST"> <input type="Hidden" name="preis" value="5.99"> Artikel <input type="Text" name="artikel"> Menge <input type="Text" name="menge"> <input type="Submit" name="submit" value="Kaufen"> </form> </body> </html>
Datei kaufen.php
<html> <head> <title>Datenübergabe mittels HIDDEN-Feld</title> </head> <body> <?php echo "Sie haben den Artikel <b>".$_POST["artikel"] ."</b>". $_POST["menge"]." mal zum Gesamtpreis von " . ($_POST["menge"] * $_POST["preis"]) . " Euro gekauft."; ?> </body> </html>
Hidden-Input-Felder stellen eine geeignete Möglichkeit dar, Daten über mehrere Webseiten hinweg zu transportieren. Schließlich muss es ausreichen, wenn der Benutzer beispielsweise seinen Vornamen nur auf der ersten Seite eines fünfseitigen Fragebogens eingibt und wir ihn trotzdem auf der fünften Seite noch immer freundlich beim Vornamen ansprechen können.
Wird die Eingabe auf der ersten Seite mittels eines Texteingabefeldes getätigt, so steht sein Vorname auf der zweiten Seite des Fragebogens in <php>$_GET</php> bzw. <php>$_POST</php> zur Verfügung. Diesen Wert können wir dank PHP in ein Hidden-Input-Feld übernehmen und transportieren den Wert damit sicher zur nächsten Seite, sobald der Benutzer die aktuelle Seite durch Aufruf des Absenden-Buttons verlässt. Diese Kette kann, solange auf der nächsten Seite ein Formular folgt, beliebig lang sein.
Hier zur Verdeutlichung die entsprechenden Skriptbeispiele:
Erste Seite
Name : <input type="Text" name="name">
Nutzung des Hidden Input Feldes in den folgenden Seiten
<input type="Hidden" name="name" value="<?php echo $_POST["name"]; ?>">
Zu beachten ist, dass dieses Beispiel nur funktioniert, wenn keine Anführungszeichen im Namen vorkommen!