SELFHTML

Forums-Auslese
Formularauswertung

Diese Seite ist ein Dokument mit Informationstext

nach unten Wie erzeugt man einen Hash aus den Formularangaben?
nach unten Wie erstellt man ein mehrseitiges Formular?

nach unten 

Wie erzeugt man einen Hash aus den Formularangaben?

Basierend auf einem Forums-Beitrag vom 23.10.1998 von:
E-Mail Oliver Zwenzner, oliver.zwenzner@sietec.de
E-Mail 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.

Beispiel:

$wert = $form{'name'};

Erläuterung:

So wird der Wert des Formularfeldes name an den Skalar $wert zurückgeliefert.

nach obennach unten 

Wie erstellt man ein mehrseitiges Formular?

Basierend auf einem Forums-Beitrag vom 31.08.1998 von:
E-Mail 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 Seite versteckten Formularfeldern. Das zweite CGI-Skript erstellt dann die Mail, die alle eingegebenen Werte enthält.

Es folgt ein Beispiel von der Redaktion:

Erster Teil des Formulars

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>

Erstes CGI-Skript

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>';

Zweites CGI-Skript

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 Seite Eingelesene Formulardaten als Mail zum Formularanbieter senden beschrieben.

nach oben
weiter:Weiter Seite File-Upload
zurück:Zurück Seite Perl: Sonstiges
 

© 2000 Seite das Redaktionsteam