Les cookies avec CGI.pm
CGI.pm est une librairie perl 5 pour créer et décoder des formulaires à la volée. Pour créer une page html, il n'est pas nécéssaire de connaitre la syntaxe html, il suffit de faire des appels à des fonctions perl. (cookies, en têtes, upload de fichier, ...).
Pour vous procurer CGI.pm, rendez vous sur http://stein.cshl.org/WWW/software/CGI/cgi_docs.html
Le but du petit script qui suit est de placer un cookie appelé 'cookiecompte' et qui compte le nombre de fois que vous avez exécuté le script. La durée de vie du cookie est fixée à 2 mois.
#!/usr/bin/perl
use CGI qw(:standard);
$cookie_name = "cookiecompte";
$session_timeout = "+2M";
$visites = cookie($cookie_name) || 0;
$visites ++;
$cook = cookie(-NAME => $cookie_name, -VALUE => $visites, -EXPIRES => $session_timeout,);
print header (-COOKIE => $cook);
print <<FIN;
Ceci est votre $visites visite<br>
Revenez bientot.
FIN
# c'est fini :-)
Exemple en fonctionnement et code source de l'exemple
Explications
Voici quelques explications concernant les lignes qui le nécéssitent :
use CGI qw(:standard); indique à perl qu'il faut utiliser la librairie CGI.
$cookie_name = "cookiecompte"; me permet de spécifier le nom que je vais donner à mon cookie.
$session_timeout = "+2M"; me permet de spécifier la durée de vie du cookie. +2M signifie 2 mois. Pour indiquer d'autres durées, il faut procéder comme suit :
Symbole |
Signification |
+30s |
30 secondes |
+10m |
dans 10 minutes |
+1h |
dans 1 heure |
-1d |
hier (moins 1 jour) |
+3M |
dans 3 mois |
+10y |
dans 10 ans |
now |
maintenant |
$visites = cookie($cookie_name) || 0; récupère dans la variable $visites la valeur du cookie dont le nom est contenu dans $cookie_name (dans ce cas ci cookiecompte). Si le cookie n'existe pas, on met 0 dans $visites.
$visites ++; se contente d'incrémenter de 1 le nombre de visites.
$cook = cookie(-NAME => $cookie_name, -VALUE => $visites, -EXPIRES => $session_timeout,); place dans $cook les infos du cookie dont le nom est contenu dans $cookie_name, la valeur dans $visites et la date d'expiration est dans $session_timeout.
print header (-COOKIE => $cook); envoie le cookie $cook vers le navigateur. Cette instruction renvoie également le content-type approprié (text/html dans ce cas).
Pour en savoir plus, consultez la doc de perl dans la partie CGI. En telnet, ou si vous avez perl installé sur votre machine, tapez perldoc CGI.
|
|