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
|