Formulardaten
Bei Formulardaten handelt es sich um Daten, die (zumeist) mit einem Formular von einer auf eine andere (oder die gleiche) Seite
übertragen werden. Verwendet bzw. verarbeitet werden solche Daten in den meisten Fällen von einer serverseitigen Skript- oder
Programmiersprache. Dadurch ist es dann z. B. möglich, die im HTML-Formular angegebenen Daten per E-Mail zu versenden
oder in einer Datenbank zu speichern. Da der E-Mail-Versand und die Datenbankverbindung nicht mit dem CGI
-Modul
in Verbindung stehen, werden wir an dieser Stelle nicht weiter darauf eingehen, sondern uns lediglich mit dem Auslesen dieser
Formulardaten beschäftigen.
GET-Parameter
GET-Parameter können entweder über ein Formular oder über einen Link übergeben bzw. direkt mit der URL angegeben werden.
GET-Parameter sind im Gegensatz zu POST-Parametern „sichtbar“, da diese direkt an die URL angehängt werden. Die Daten
werden nach dem Fragezeichen ?
in der Form name=wert
angegeben. Mehrere Werte werden mit einem
&-Zeichen getrennt (z. B. ?name1=wert1&name2=wert2
). Diese Tatsache der Sichtbarkeit ist für einige Zwecke
nützlich (z. B. bei einer Blätterfunktion in einem Shop oder Forum) zum anderen aber auch gefährlicher, denn die so übergebenen
Daten werden beim Speichern eines Lesezeichens u. U. mit abgelegt und können zudem leichter manipuliert werden. Des
Weiteren darf die GET-Methode nicht bei der Übertragung von größeren Datenmengen genutzt werden. Die Verwendung der
GET-Methode in Kombination mit einem Kontaktformular ist daher weder „sicher“ noch sinnvoll. Für andere Zwecke (z. B. die
oben erwähnte Blätterfunktion) ist die GET-Methode jedoch durchaus sinnvoller. Um den Wert eines GET-Parameters zu ermitteln,
kann die Funktion url_param()
genutzt werden. Dieser wird als Übergabewert der Name des Parameters übergeben.
Als Rückgabewert erhalten Sie den Wert des Parameters oder undef
, wenn der Parameter nicht mitgeschickt wurde
bzw. nicht in der URL enthalten ist.
#!/usr/bin/perl -w use strict; use CGI; my $cgi = new CGI(); # Parameter einlesen my $a = $cgi->url_param('a') || '-'; my $b = $cgi->url_param('b') || '-'; print <<END; Content-Type: text/html;charset=UTF-8 <!Doctype html> <html> <head> <title>GET-Parameter - Perl Code-Beispiel</title> <meta charset="utf-8" /> <meta name="robots" content="noindex,nofollow" /> <meta name="publisher" content="Homepage-Webhilfe" /> </head> <body> Wert a: $a<br /> Wert b: $b<br /> <br /> <b>Links:</b><br /> <a href="formular-get.pl">A: -, B: -</a><br /> <a href="formular-get.pl?a=7">A: 7, B: -</a><br /> <a href="formular-get.pl?b=4">A: -, B: 4</a><br /> <a href="formular-get.pl?a=8&b=3">A: 8, B: 3</a> </body> </html> END
POST-Parameter
POST-Parameter werden außerhalb der URL übertragen, wodurch es auch möglich ist, große Mengen an Daten zu versenden.
Ein speichern der Daten in einem Hyperlink ist dann ebenfalls nicht mehr möglich. Möchten Sie POST-Parameter mittels der
CGI
-Moduls auslesen, so können Sie die Funktion param()
verwenden. Dieser wird ebenfalls der Name
des Parameters übergeben und als Rückgabe erhalten Sie auch hier den Wert des Parameters (oder undef
, wenn der
Parameter nicht mit versendet wurde).
#!/usr/bin/perl -w use strict; use CGI; my $cgi = new CGI(); # Parameter einlesen my $anrede = $cgi->param('anrede') || ''; my $vorname = $cgi->param('vorname') || ''; my $nachname = $cgi->param('nachname') || ''; print <<END; Content-Type: text/html;charset=UTF-8 <!Doctype html> <html> <head> <title>POST-Parameter - Perl Code-Beispiel</title> <meta charset="utf-8" /> <meta name="robots" content="noindex,nofollow" /> <meta name="publisher" content="Homepage-Webhilfe" /> </head> <body> Wert "anrede": $anrede<br /> Wert "vorname": $vorname<br /> Wert "nachname": $nachname<br /> <br /> <form action="formular-post.pl" method="post"> <table> <tr> <td style="width: 100px;">Anrede:</td> <td> <select name="anrede"> <option value="H">Herr</option> <option value="F">Frau</option> </select> </td> </tr> <tr> <td style="width: 100px;">Vorname:</td> <td><input type="text" name="vorname" /></td> </tr> <tr> <td style="width: 100px;">Nachname:</td> <td><input type="text" name="nachname" /></td> </tr> <tr> <td></td> <td><input type="submit" value="Absenden" /></td> </tr> </table> </form> </body> </html> END
Wichtig: Die Funktion param()
kann auch bei GET-Parametern verwendet werden. Jedoch sollte für eine klarere
Trennung zwischen GET und POST bevorzugt die Funktion url_param()
verwendet werden.