Noch immer Probleme bei Formularasuwertung
Max
- perl
Ich habe zwar schon Hilfe erhalten (an dieser stelle nochmal allen vielen dank!), aber keiner konnte mein problem lösen. Hier ist es nochmal:
Ich möchte, dass jemand ein Formular ausführt, und wenn er auf einen Button klickt, wird basierend auf seinen eingaben mittels eines Perl-Scripts eine HTML seite angelegt. Ich habe das Formular, und das Perl-Script wird gestartet. Es wird auch die Page angelegt, aber die Variablen aus dem Formular werden nicht eingefügt. Ich wäre für folgende Sachen äußerst dankbar:
Ein Script, welches Formulardaten in einem Hash ablegt, sodaß ich sie in der Form $FORM('Textfeldname') ansprechen kann.
Bitte erklärt auch, wie ich sie genau einbinden muss (Syntax), da ich noch relativ neu bei Perl bin.
Nochmal: Die Seite muss nicht direkt angezeigt werden, sondern nur angelegt, mit ein paar variablen, die man im Formular eingegeben hat.
Ich möchte, dass jemand ein Formular ausführt, und...
Natürlich muss er das Formular ausfüllen, sorry!
Hi Max!
1.Variante:
Du sendest Deine Formular mit "post"
<FORM method=POST action="/user-cgi-bin/dein_script.pl">
Dann kannst Du diesen Perl code in Deinem Script verwenden:
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<!--(.\n)*-->//g;
if ($allow_html eq '0') {
$value =~ s/<([^>]\n)*>//g;
}
$INPUT{$name} = $value;
}
(Ist $allow_html = 0, dann wird zusätzlich noch eventuell eingegebener HTML-Code entfernt.)
Du kannst dann über $INPUT('Textfeld') auf die Felder zugreifen. Z.B. so
print HTML_FILE "Die MailAdresse ist: $INPUT{'email'}<br>\n";
Achtung: "Textfeld" ist case sensitive ($INPUT{'email'} ist nicht gleich $INPUT{'Email'}) und muss exakt so geschrieben werden wie im HTML-Formular.
2. Variante:
Du nutzt das Modul
use CGI qw(:standard);
Dann kannst Du unabhängug von Deiner Methode im Formular (post oder get) über
param('Textfeld') auf den Inhalt zugreifen, z.B. so:
print HTML_FILE "Die MailAdresse ist: param('email')<br>\n";
Gruß Frank
P.S. Korrekt wäre eigentlich folgendes:
print HTML_FILE "Die MailAdresse ist:".$INPUT{'email'}."<br>\n";
Die Punkte zw. "Die Mail...ist:", der Variablen $INPUT{..} und "<br>\n" verbinden die 3 Teilstrings zu einem. Aber der Perlinterperter ist kulant und erkennt, das $INPUT{..} kein Text sondern eine Variable ist und setzt dort deren Inhalt ein...