Hallo, everybody!
Ich bin ein eingefleischter C(ohne++!)-Windows-Programmierer, der sich (aus ökonomischen Gründen) auch im WEB zurechtfinden muß. Mein Bruder (www.andrip.de) vertreibt eine Software (ich will keine Werbung explizit machen, schaut einfach dort nach!), die auch im Internet angeboten wird. Dazu eine Homepage mit
Bestell-FORM-ular, das mit einem Perl-Script auf dem Server schnackt.
Mein Problem: Es klappt, aber nur so in etwa 80 Prozent der Fälle. Oder doch immer?
Jetzt genau:
Das Script liest alle übermittelten Daten aus und echo't sie in eine E-mail an uns sowie einer HTML an den Kunden. Immer mal, aber immer öfter, bekommen wir eine E-Mail, die vom Script abgeschickt wurde, der offensichtlich NULL Übergabe-Daten gelesen hat. Zeitgleich schaue ich in der ACCESSLOG-Datei des Servers nach und sehe, daß ein GET-Befehl auf "bestell.pl" abgesetzt worden war, ohne übergebene Parameter. Ich verstehe das, wenn die Logdatei als Originator einen Robot zitiert (Slurp, Web-sheep, Guliver, oder wie sie alle heißen). Aber ein Absender wie "Mozilla...compatible... IE5.01" müßte ein Kunde sein, dessen Bestellung ich dann nicht sehe. Oder ist es eine Fehlfunktion des Browsers? oder des HTML? oder des Script? oder des Servers (in diesem Falle die Firma Schlund)?
HTML ist einfach:
<form method=POST action="http://www.andrip.de/cgi-bin/bestell.pl"> usw..usw..</form>
Perl ist komplizierter (Ich bin da am stottern, da ich PERL nicht kenne, nur Prinzip "monkey see, monkey do") (wenn ich C-Windows schreiben dürfte wie beim WIN-NT-Omnicron-Server, wäre ich selig, da klappt alles am Schnürchen, aber ich muß mich mit total kryptischem PERL auf Unix bei Schlund rumschlagen)
#!/usr/bin/perl
....
$eingabe="####";
if ($ENV{REQUEST_METHOD} eq "GET") {$eingabe=$ENV{QUERY_STRING};}
else {read(STDIN,$eingabe,$ENV{CONTENT_LENGTH});}
(ich weiss z.b. nicht, ob $ENV{mit tüttelchen} oder ohne tüttelchen, nirgendswo beschrieben, im Internet kursieren beide Versionen als Demo-Skripts)
...
@daten=split(/&/,$eingabe);
while ($element=shift(daten))
{und hier ist das Problem:
Es folgen einfach keine Daten in dieser while-Schleife.....total leer
}
(Ich unterdrücke hier den Kode, der die MAIL verschieckt sowie die HTML-Rückantwort generiert)
Wie gesagt, in 80 prozent belegt ACCESSLOG ganz brav ein abgesetztes POST, was prima mit unseren empfangenen Mails zu korrelieren ist. Aber in 20 Prozent zitiert ACCESSLOG stattdessen ein GET, obwohl die FORM ganz klar "POST" verlangt.
Ist die ein Browser-Problem (Opera??? Ich weiß leider nicht, was so in der Welt alles exisitiert)
Ist dies mal wieder ein Screw-Up von Herrn Gates mit seinen IExplorern?
Oder ist dies vom Schlund-Server generiert, der aus Langeweile einfach mal den bestell.pl-Skript ab und zu mal anklingelt?
????? WIE KANN MAN EIN GET PRODUZIERN, OBWOHL DIE FORM EIN POST VERLANGT?????
Ich bitte ganz bescheiden um HILFE!!!
(Ich will nicht verschweigen, daß ich, meiner Meinung nach, das Archiv erstmal gewissenhaft abgesucht habe, aber nichts zu diesem Thema gefunden habe!)
(Ich selber kann diese Effekte nicht produzieren, habe aber auch nur einen kleinen Teil der Arbeitsmittel zur Verfügung: Win95, IE5.xx,NETSCAPE 4.xx, kein Opera, kein Unix, keine älteren Browser, kein Outlook oder andere Wollmilchsäue von Herrn Gates.....bei mir klappt leider alles!)
Christoph R.