Stefan Muenz: Perl-Aufruf aus CGI generierter HTML mit Parameterübergabe

Beitrag lesen

Hallo Roland,

print "<td width=66% align="center"><a href="test.pl ",@Kurztext[$a],"">",@Kurztext[$a],"</a></td>\n";

Wenn Du einem Perl-Script auf CGI-Basis Daten uebergibst, kannst Du die GET-Methode oder die POST-Methode verwenden. Interessant ist in diesem Zusammenhang wohl eher die GET-Methode, weil sie es erlaubt, direkt an die URL-Adresse, getrennt durch ein Fragezeichen, Daten anzuhaengen, die dann als Parameter uebergeben werden. Dazu aber beachten:

1. Hinter der URL und vor den zu uebergebenden Daten muss ein Fragezeichen kommen. Das fehlt in der obigen Syntax. Also etwa so:
print "<td width=66% align="center"><a href="test.pl?@Kurztext[$a]">@Kurztext[$a]</a></td>\n";

2. Wenn es Probleme gibt, sollten die zu uebergebenden Daten vor der Uebergabe nach den Regeln des Mime-Types application/x-www-form-urlencoded kodiert werden. Ich weiss jetzt leider nicht, ob es dafuer eine Perl-Funktion oder einen genialen regulaeren Ausdruck gibt - vielleicht kennt jemand einen solchen.

3. Das CGI-Script muss, um an die GET-Daten zu kommen, die CGI-Umgebungsvariable QUERY_STRING auslesen. Also etwa so: $daten = $ENV{'QUERY_STRING'};

Und die zweite Frage ist:
Was muss ich tun, um eine zweite Seite zu generieren, die nicht an der ersten hängt?

Hmmm? Du musst Dir das Spielchen zwischen Server und Browser vorstellen. Direkt an den Browser kann immer nur eine HTML-Datei gesendet werden (mehr kann er ja nicht zu ein und derselben Zeit anzeigen).
Wenn Du eine andere Datei erzeugen willst, kannst Du die z.B. erst mal als Datei speichern. In der ersten Datei (die, die an den Browser gesendet wird), koennte dann bereits ein Link auf diese andere Datei enthalten sein.
Oder habe ich das falsch verstanden - was genau willst Du da erreichen?

Viele Gruesse
  Stefan Muenz