![]() |
Forums-Auslese |
|
|
|
Basierend auf einem Forums-Beitrag vom 23.10.1998 von:
Oliver Zwenzner, oliver.zwenzner@sietec.de
Stefan Münz, muenz@csi.com
Folgende Funktion weist einem Hash die Eingaben eines Formulars zu.
sub Formulardaten_einlesen {
if ($ENV{'REQUEST_METHOD'} eq "GET")
{
$buffer = $ENV{'QUERY_STRING'};
} else {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
}
for (split(/&/, $buffer)
{
tr/+/ /;
s/%([a-fA-F0-9]{2})/pack("C", hex($1))/eg;
($key, $value) = split(/=/);
$form{$key} = $value;
}
}
|
Anschließend kann man auf die Werte der Formularfelder über den Hash %form zugreifen.
$wert = $form{'name'};
|
So wird der Wert des Formularfeldes name an den Skalar $wert zurückgeliefert.
|
|
Basierend auf einem Forums-Beitrag vom 31.08.1998 von:
Markus Schaber, markus.schaber@student.uni-ulm.de
Wenn beide Formulare als eine Mail ankommen sollen, nicht als zwei getrennte Mails, benötigen Sie ein CGI-Skript, das die beiden zusammenfügt. Dies ist am einfachsten, indem Sie die eingetragenen Werte des ersten Formulars an das zweite übergeben. Dazu erstellt das erste CGI-Skript dynamisch das HTML-Dokument mit dem zweiten Teil der Eingabefelder und speichert die bereits vorhandenen Werte in
versteckten Formularfeldern. Das zweite CGI-Skript erstellt dann die Mail, die alle eingegebenen Werte enthält.
Es folgt ein Beispiel von der Redaktion:
Der erste Teil des Eingabeformulars befindet sich in einem HTML-Dokument. Als action wird ein CGI-Skript angegeben, das die Eingaben übernimmt und den zweiten Teil des Formulars erstellt.
<form action="feedback1.pl" method="POST"> <input name="Eingabefeld"> <!-- weitere Eingabefelder --> <input type="submit" value="Absenden"> </form> |
Dieses Skript liest die übergebenen Werte ein und speichert sie in einem Hash. Dann erstellt es eine HTML-Datei mit dem zweiten Teil des Formulars, das gleichzeitig alle Werte des ersten Teil des Formulars in versteckten Feldern enthält.
#!/usr/bin/perl
read(STDIN, $EnvDaten, $ENV{'CONTENT_LENGTH'});
@Daten = split(/&/,$EnvDaten);
for (@Daten)
{
@value = split(/=/, $_);
$value[1] =~ tr/+/ /;
$value[1] =~ s/%([a-fA-F0-9]{2})/pack("C", hex($1))/eg;
$p{"$value[0]"} = $value[1];
}
print "Content-Type: text/html\n\n";
print '<html><head><title>Zweiter Teil des Formulars</title></head><body>';
print '<form action="feedback2.pl" method="POST">';
for (keys %p)
{
print "<input type=\"hidden\" name=\"$_\" value=\"$p{'$_'}\">\n";
}
print '<!-- weitere Eingabefelder -->';
print '<input type="submit" value="Absenden">
print '</form>%lt;/body></html>';
|
Das CGI-Skript, das vom zweiten Teil des Formulars aufgerufen wird, arbeitet ähnlich wie das erste CGI-Skript, allerdings sendet es die Daten per eMail statt diese zur Erstellung eines Formulars zu nutzen. Wie das funktioniert, wird im SELFHTML-Abschnitt
Eingelesene Formulardaten als Mail zum Formularanbieter senden beschrieben.
|
| |
| weiter: |
|
| zurück: |
|
| |
|
© 2000
das Redaktionsteam