Homepage-Webhilfe Event-Banner

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 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
Vorschau

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
Vorschau

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.

Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen OK