RichardWotzlaw: Verfluchte reguläre Ausdrücke

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

--

'Glauben kann keine Berge versetzen, aber der Glaube vermag Berge dahin zu stellen, wo noch keine Berge sind.'
Friedrich Nietzsche
  1. my $uebergabe = $ENV{QUERY_STRING};
    $uebergabe =~ /(.+?)=(.+?)&(.+?)=(.+?)&(.+?)=(.+?)&(.+?)=(.+?)&(.+?)=(.+?)&/;

    Und wieso greifst du nicht über $_POST["name"], $_POST["firma"] usw. auf die Werte zu?

    1. 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?

      1. 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

        --

        'Glauben kann keine Berge versetzen, aber der Glaube vermag Berge dahin zu stellen, wo noch keine Berge sind.'
        Friedrich Nietzsche
        1. ä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

          1. 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

            --
            My sssignature, my preciousssss!
            1. 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.)

  2. 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

  3. 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