ABC skryptów CGI

CGI i "ciastka" - uzupełnienie

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