Cheatah: Cookie setzen, aber danach weiterleiten ?

Beitrag lesen

Hi,

Nun soll das Script aber nach dem setzen des Cookies weiterleiten, was aber irgendwie nicht geht, da ich ja print $query->header(-cookie=>$cookie); habe und somit einen Header ausgebe, was mir wiederum Steine in den Weg wegen $query->redirect legt.

durch die Tür, linke Reihe, jeder Response nur ein Header. Dieser kann allerdings "Set-Cookie:" _und_ "Location:" enthalten, was der cookie()- bzw. redirect()-Methode von CGI.pm entspricht.

Erweitere also einfach die Parameter Deines header()-Aufrufs. perldoc CGI sagt Dir mehr dazu.

Ich hab die Weiterleitung bis jetzt mit JavaScript gemacht, aber das kann es doch nicht sein ?

Nein, in der Tat... wenigstens ein <meta>-Refresh hätte es sein können :-)

Ich poste mal das (vielleicht etwas beschämende) Script.

Eigentlich ist es gar nicht schlecht; es ist im Gegenteil sogar ziemlich gut. Ich hab nur wenige Anmerkungen:

#!/usr/bin/perl -w

use strict; # Und dadurch musst Du schreiben:

$query = new CGI;

my $query = new CGI;

Mit strict vermeidest Du viele Fehler. Welche das sind sagt es Dir, wenn Du das Script einfach mal mit use strict; versiehst und testweise ausführst.

$data = "b";

Hier reichen Singlequotes. Es ist nicht nötig, den Perl-Interpreter nach zu ersetzenden Variablen u.ä. suchen zu lassen.

open(STAT,">>vote.txt") or die "There is an error, please try again";

In den die-Text solltest Du die Variable $! einbauen, um die Ursache des Fehlers mitzubekommen.

print "<script language="JavaScript">\n";
print "window.location.href="vote_umleitung.html"\n";
print "</script>\n</body>\n</html>\n";

Es ist sicher nicht schlecht, wenn Du Dich mit Here-Documents beschäftigst. Dadurch vermeidest Du die vielen " und \n, und der HTML-Code steht gut lesbar innerhalb des Perl-Codes.

Cheatah