POST und GET Variablen empfangen
|
Seitenanfang |
| Hi Ihr, bisher habe ich in meinen Perl-Scripten immer nur POST oder GET Variablen empfangen und somit dieses hier am Anfang: if($ENV{'REQUEST_METHOD'} eq 'GET') { $Daten = $ENV{'QUERY_STRING'} } else { read(STDIN, $Daten, $ENV{'CONTENT_LENGTH'}) }$Daten =~ s/%([\da-fA-f]{2})/pack("c",hex($1))/ge; $Daten =~ tr/+/ /; for(split/&/,$Daten){($key , $val) = split/=/,$_,2;$Form{$key} .= $val;} benutzt wordurch ich diese Form einer Variablen bekomme: $Form{Variablenname} Die Form fand ich ganz angenehm. Nun will ich aber wie gesagt beides, sowohl POST als auch GET Variablen benutzen. Wie geht das in Perl ? In PHP gibt es dieses wunderbar einfach $_GET["Variablenname"] und $_POST["Variablenname"]. Gibts sowas einfaches nicht auch in Perl ? Ich dreh noch durch !
Datum: 13.12.2005-20:48

|
re: POST und GET Variablen empfangen
|
Seitenanfang |
| Hi, das geht in Perl recht simpel über das CGI Modul. Da braucht man sich nicht einmal zu kümmern, mit welcher Methode die Daten gesendet wurden, respektive in welcher Variable sie stehen.
use CGI; my $cgi = new CGI; my %form = {}; $form{'p1'} = $cgi-param('p1') || undef; $form{'p2'} = $cgi-param('p2') || undef; $form{'p3'} = $cgi-param('p3') || undef;
-uw
Datum: 14.12.2005-02:40

|
re: POST und GET Variablen empfangen [Fehlerkorrektur]
|
Seitenanfang |
Ups, kleiner Fehler Sorry!
$form{'p1'} )= $cgi->param('p1') || undef; $form{'p2'} )= $cgi->param('p2') || undef; $form{'p3'} )= $cgi->param('p3') || undef;
-uw
Datum: 14.12.2005-02:44

|
re: POST und GET Variablen empfangen [Fehlerkorrektur 2]
|
Seitenanfang |
Meine Güte, was ist den heute los?
$form{'p1'} = $cgi->param('p1') || undef; $form{'p2'} = $cgi->param('p2') || undef; $form{'p3'} = $cgi->param('p3') || undef;
Datum: 14.12.2005-02:46

|
re: POST und GET Variablen empfangen [Fehlerkorrektur 2]
|
Seitenanfang |
Das versteh ich nicht ganz. Also nehmen wir an, ich habe die POST-Variable "Name", dann kann ich die einfach mit use CGI; my $cgi = new CGI; $Name=$cgi->param('Name'); ansprechen und in $Name speichern ? Mehr brauch ich nicht ??? Wieso zur Hölle steht dann überall im Netz und in Büchern der Mist, den ich da immer benutzt habe ???
Datum: 14.12.2005-06:23

|
re: POST und GET Variablen empfangen [Fehlerkorrektur 2]
|
Seitenanfang |
| Hmmm, also ich finde überall im Netz: "Benutze das CGI-Modul und mach' nicht alles selbst". Ja, es ist wirklich so einfach ;-) Noch besser: ein einfaches
if ($cgi->param()) { # das Formular wurde abgeschickt, ich kann die Daten verarbeiten und ein Ergebnis anzeigen } else { # es wurde noch nicht abgeschickt, also muss ich es anzeigen }
erlaubt, beide Zustände in einem Skript unterzubringen."man CGI" (unter Linux), bzw. "perldoc CGI" unter Windows ist sehr erhellend. Gruss, svenXY
Datum: 14.12.2005-09:05

|
re: POST und GET Variablen empfangen [Fehlerkorrektur 2]
|
Seitenanfang |
Also scheint zwar zu funktionieren, aber wieder mal nur zum Teil. Alle POST-Variablen sind da, alle GET Variablen gehen irgendwie verloren. Ich kann somit immer noch nicht GLEICHZEITIG in einem script empfangene POST und GLEICHZEITIG empfangene GET Variablen auswerten. Es geht nur immer entweder oder. Komisch... Übersende ich nur GET Variablen klappts mit dem angegebenen Code, übersende ich nur POST gehts auch. Aber nicht beides gleichzeitig. Es scheint so, als übersetze er die empfangenen POST Variablen und geht gar nicht erst zu den GET Variablen über. Zumindest ist $Form{<GET Variablen>} leer und $Form{<POST Variablen>} "voll" wenn ich beides zugleich sende.my $cgi = new CGI; my @Feldnamen = $cgi->param(); my %Form = {};foreach my $Feld (@Feldnamen) { $Form{$Feld} = $cgi->param($Feld); }
Datum: 14.12.2005-13:27

|
re: POST und GET Variablen empfangen [Fehlerkorrektur 2]
|
Seitenanfang |
| was setzt Du denn in Deinem form tag? Vermutlich POST?
Datum: 14.12.2005-16:17

|
re: POST und GET Variablen empfangen [Fehlerkorrektur 2]
|
Seitenanfang |
Ja, natürlich POST, aaaaaber mein Form-Tag geht action-mäßig eben auf eine bestimmte Stelle der index-Datei anhand von GET-Variablen. Also so:
<form action=\"http://www.seite_xy.de/cgi-bin/index.pl?seite=Formularabschicken\" method=POST>...</form>
Also bekomme ich GET- und POST-Variablen gleichzeitig.
Datum: 14.12.2005-18:31

|
re: POST und GET Variablen empfangen [Fehlerkorrektur 2]
|
Seitenanfang |
| Hi, sei mir nicht böse, aber das ist Blödsinn, was Du da machst. Man muss sich entscheiden, welche Methode man für das Protokoll wählt. Du hast da ein Verständnisproblem, wie das Protokoll HTTP (RFC2616) funktioniert. Wenn Du ein Form losschickst musst Du etwaige Optionen "bla.cgi?x=y" in einem
<input type=hidden name="x" value="y">
übergeben.-uw
Datum: 14.12.2005-23:17

|
re: POST und GET Variablen empfangen [Fehlerkorrektur 2]
|
Seitenanfang |
Also, danke für den Tipp, aber wieso das Blödsinn sein soll raff ich nicht. Es muss doch wie bei PHP mit Perl möglich sein sowhl GET- als auch POST-Variablen auszuwerten, die gleichzeitig übergeben werden. Wieso zur Hölle ist das "Blödsinn" ??? Deinem "Blödsinn" entnehme ich, dass es mit Perl nicht möglich ist POST- und (!!!!) GET-Variablen gleichzeitig zu empfangen und zu verarbeiten, ja !??? Mit PHP ist das absolut kein Problem, daher dachte ich, dass das in anderen Programmiersprachen auch geht. Schließlich soll Perl komplexer, umfangreicher und somit "besser" sein als Perl, habe ich gelesen (kommt natürlich immer auf den Anwendungszweck an).
Datum: 15.12.2005-02:39

|
re: POST und GET Variablen empfangen [Fehlerkorrektur 2]
|
Seitenanfang |
| "... als PHP..." natürlich !
Datum: 15.12.2005-02:41

|
re: POST und GET Variablen empfangen [Fehlerkorrektur 2]
|
Seitenanfang |
| Hi, OK. Es geht sicherlich (es geht IMMER irgendwie). Du kannst bestimmt auf den POST Teil per CGI-Modul zugreifen und den GET Teil - ganz so, wie Du es bisher immer gemacht hast - aus QUERY-STRING rauslesen. Ansonsten empfehle ich eine umfangreiche Google Suche zum Thema, bestimmt hat das schon jemand anderes versucht. Gruss, svenXY
Datum: 15.12.2005-09:03

|
re: POST und GET Variablen empfangen [Fehlerkorrektur 2]
|
Seitenanfang |
| Was meinst Du wieviel ich schon gegoogelt habe... Merkwürdig, dass das so schwierig in Perl ist...
Datum: 15.12.2005-10:58

|
re: POST und GET Variablen empfangen [Fehlerkorrektur 2]
|
Seitenanfang |
Hi, habe nochmal unseren Webmaster gefragt und er würde es auch so machen: POST per param() und GET aus dem QUERY_STRING rausholen.svenXY
Datum: 15.12.2005-16:29

|
re: POST und GET Variablen empfangen [Fehlerkorrektur 2]
|
Seitenanfang |
Ich habs jetzt aus Zeitgründen anders lösen müssen. Hatte zudem Deinen letzten Beitrag irgendwie missverstanden und erst jetzt durch Deinen Beitrag eben gerafft, wie Du das meintest. Von daher ist es nun schwer es auszuprobieren, weil die Seite schon on ist. Aber ich werde es bei der nächsten Seite sicherlich mal so probieren. Klingt logisch. Jetzt habe ich es alles per POST gemacht und per pram abgefragt. Also aus action=index.pl?seite=xy einfach index.pl und <input type=hidden name=seite value=xy> gemacht. So gings dann erstmal. Dennoch: vielen, vielen Dank für Deine vielen Ratschläge und Hilfestellungen, svenXY !
Datum: 15.12.2005-16:39

|