Verfluchte reguläre Ausdrücke
RichardWotzlaw
- perl
0 andreas0 andreas0 RichardWotzlaw-2 andreas
1 Siechfred0 Vinzenz Mai
Hallo,
Wenn ich mein HTML-Formular ausfülle, zeigt er nur Name: usw. an! QUERY_STRING funzt aber, hab ich schon probiert es _muss_ also am regulären Ausdruck liegen:
---------------------------------------------------------------------
my $uebergabe = $ENV{QUERY_STRING};
$uebergabe =~ /(.+?)=(.+?)&(.+?)=(.+?)&(.+?)=(.+?)&(.+?)=(.+?)&(.+?)=(.+?)&/;
my $name = $1;
my $firma = $2;
my $telefon = $3;
my $email = $4;
my $betreff = $5;
print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">', "\n";
print "<html><head><title>Test-Ausgabe</title></head><body>\n";
print "<h1>Hurra, es klappt!</h1>\n";
print "<b>Name:</b> $1<br>";
print "<b>Firma:</b> $2<br>";
print "<b>Telefon:</b> $3<br>";
print "<b>E-Mail:</b> $4<br>";
print "<b>Betreff:</b> $5<br>";
print "</body></html>\n";
---------------------------------------------------------------------
Gruß aus MeckPomm
my $uebergabe = $ENV{QUERY_STRING};
$uebergabe =~ /(.+?)=(.+?)&(.+?)=(.+?)&(.+?)=(.+?)&(.+?)=(.+?)&(.+?)=(.+?)&/;
Und wieso greifst du nicht über $_POST["name"], $_POST["firma"] usw. auf die Werte zu?
my $uebergabe = $ENV{QUERY_STRING};
$uebergabe =~ /(.+?)=(.+?)&(.+?)=(.+?)&(.+?)=(.+?)&(.+?)=(.+?)&(.+?)=(.+?)&/;Und wieso greifst du nicht über $_POST["name"], $_POST["firma"] usw. auf die Werte zu?
ach, sorry, jetzt hab ich die Threads verwechselt. Das war PHP, aber gibts in Perl nicht eine vergleichbare Lösung?
Hallo,
my $uebergabe = $ENV{QUERY_STRING};
$uebergabe =~ /(.+?)=(.+?)&(.+?)=(.+?)&(.+?)=(.+?)&(.+?)=(.+?)&(.+?)=(.+?)&/;Und wieso greifst du nicht über $_POST["name"], $_POST["firma"] usw. auf die Werte zu?
ach, sorry, jetzt hab ich die Threads verwechselt. Das war PHP, aber gibts in Perl nicht eine vergleichbare Lösung?
ähm... jetzt wo dus sagst. Wenn mich nicht alles täuscht, ist ENV doch ein Hash? Also %ENV. Dann müsste ich aber erst QUERY_STRING in den Hash einlesen... komplizierte Sache. Ich weiß echt nicht, wie ich das machen kann.
Gruß aus MeckPomm
ähm... jetzt wo dus sagst. Wenn mich nicht alles täuscht, ist ENV doch ein Hash? Also %ENV. Dann müsste ich aber erst QUERY_STRING in den Hash einlesen... komplizierte Sache. Ich weiß echt nicht, wie ich das machen kann.
Hier steht doch wie das geht:
http://saftsack.fs.uni-bayreuth.de/html/selfhtml/tgcm.htm#a1
Moin!
http://saftsack.fs.uni-bayreuth.de/html/selfhtml/tgcm.htm#a1
Hälst du es für sinnvoll, eine uralte Version 7.0 von 1998 zu zitieren? Seitdem hat sich so ziemlich alles im Internet weiterentwickelt, sogar SELFHTML. Wir sind mittlerweile bei Version 8.1.1 aus dem Jahre 2005 angelangt!
Und auch hinsichtlich CGI und Perl hat sich einiges getan. Es ist mittlerweile die Überzeugung aller guten Perl-Programmierer, dass man das Dekodieren von GET- und POST-Requests dem CGI-Modul überlassen sollte, welches sich auf jedem Perl-fähigen Webspace befindet.
- Sven Rautenberg
Hälst du es für sinnvoll, eine uralte Version 7.0 von 1998 zu zitieren?
Nein. Ich hab den Link nicht genau angeschaut, war wohl ein Suchergebnis. Mein Fehler.
Seitdem hat sich so ziemlich alles im Internet weiterentwickelt, sogar SELFHTML. Wir sind mittlerweile bei Version 8.1.1 aus dem Jahre 2005 angelangt!
Hab ichs mir doch gedacht!
(Für wie blöd hälst du mich? Aber danke dass du mich auf neusten Stand der Datumsrechnung bringst.)
Hell-O!
Wenn ich mein HTML-Formular ausfülle, zeigt er nur Name: usw. an!
Warum zum Geier willst du das Rad neu erfinden, nutze doch das CGI-Modul. Wenn du es schon unbedingt zu Fuß erledigen willst, schau dir mal mein Posting vom 29.11.2005 an.
QUERY_STRING funzt aber, hab ich schon probiert es _muss_ also am regulären Ausdruck liegen:
Bedingt :-)
$uebergabe =~ /(.+?)=(.+?)&(.+?)=(.+?)&(.+?)=(.+?)&(.+?)=(.+?)&(.+?)=(.+?)&/;
Du setzt voraus, dass dein Querystring aus mindestens 6 Name-Wert-Paaren besteht, da der Ausdruck mit einem "&" endet.
my $name = $1;
my $firma = $2;
my $telefon = $3;
my $email = $4;
my $betreff = $5;
Naja, und zählen scheint nicht zu deinen Stärken zu gehören, da $1 und $2 das erste Name-Wert-Paar bilden, aber nicht Name und Firma enthalten.
Siechfred
Hallo Richard,
Wenn ich mein HTML-Formular ausfülle, zeigt er nur Name: usw. an! QUERY_STRING funzt aber, hab ich schon probiert es _muss_ also am regulären Ausdruck liegen:
my $uebergabe = $ENV{QUERY_STRING};
$uebergabe =~ /(.+?)=(.+?)&(.+?)=(.+?)&(.+?)=(.+?)&(.+?)=(.+?)&(.+?)=(.+?)&/;
würdest Du mir bitte erläutern, was Du damit vorhast?
Bitte lies Dir den Perl-Abschnitt von SELFHTML durch, insbesondere lege ich Dir die Abschnitte
Wechselwirkung HTML und CGI
Formularverarbeitung mit dem CGI-Modul
ans Herz. Schau Dir im ersten Abschnitt an, wie dort die Parameter auseinanderklamüsert werden und dann im zweiten, wie elegant dies über das CGI-Modul zu erledigen ist.
Ich weiß, dass es sich bei den verlinkten Beispielen um den Zugriff auf POST-Daten handelt, die Verarbeitung von GET ist aber prinzipiell analog.
Freundliche Grüße
Vinzenz