W związku ze zmianą sposobu działania funkcji split w nowszych wersjach Perla, przedstawiony w rozdziale «CGI i "ciastka"» kod skryptu wymaga modyfikacji, w przeciwnym wypadku nie będzie działać poprawnie. Poniżej można zobaczyć poprawiony skrypt - fragmenty, które zostały zmodyfikowane, zaznaczone są wytłuszczeniem:
#!/usr/bin/perl use CGI; print "Content-type: text/html; charset=iso-8859-2\n"; # jeżeli zostało wprowadzone imię z formularza if ($ENV{'CONTENT_LENGTH'}) { CGI::ReadParse(*form); print "Set-Cookie: IMIE=$form{'imie'}; expires=Tue, 1-Jan-2030 00:00:00 GMT\n"; print "Set-Cookie: RAZY=1; expires=Tue, 1-Jan-2030 00:00:00 GMT\n\n"; print <<"EOF"; <html> <head><title>Witaj!</title></head> <body> <h1 align="center">Dziękuję!</h1> Zapraszam na nasze strony w przyszłości! EOF } else { # w przeciwnym razie najpierw sprawdzamy, czy jest ciastko if ($ENV{'HTTP_COOKIE'}) { @cookies = split /\;\s*/, $ENV{'HTTP_COOKIE'}; # rozdziela nagłówek Cookie: na poszczególne ciastka foreach (@cookies) { @out = split /=/; # rozdziela w ciastku nazwę od wartości if ($out[0] eq "IMIE") { $imie = $out[1]; } if ($out[0] eq "RAZY") { $razy = $out[1]; } } } if ($razy) { $razy = $razy + 1; print "Set-Cookie: RAZY=$razy; expires=Tue, 1-Jan-2030 00:00:00 GMT\n"; } print "\n"; print <<"EOF"; <html> <head><title>Witaj!</title></head> <body> EOF if ($imie) { print "<h1 align=\"center\">Witaj $imie!</h1>\n"; print "Miło Cię widzieć znowu na naszej stronie!<p>\n"; print "Jesteś tu już $razy raz!\n"; } else { print <<"EOF"; <h1 align="center">Witaj!</h1> Jesteś na tej stronie pierwszy raz.<p> <form method="post" action="http://$ENV{'SERVER_NAME'}$ENV{'SCRIPT_NAME'}"> Proszę, podaj swoje imię: <input type="text" name="imie"> <input type="submit" value="OK"> </form> EOF } } print "</body>\n</html>\n";
Jarosław Rafa, 2014.
Powrót do spisu treści | Statystyka |