Les cookies
peuvent être manipulés par les scripts serveurs et les scripts clients,
nous allons le faire avec JavaScript, côté navigateur.
Le cookie
Le cookie
est une propriété de l'objet document. On y accède donc par
"document.cookie". Il posède lui-même les attributs suivants
: un nom, une valeur, un domaine, un chemin d'accès et une date d'expiration
; attributs qu'il vaut mieux connaître pour utiliser pleinement cet outil.
Je ne vais
pas me lancer dans la description de ces attributs. Les spécifications
des cookies sont donnés sur le site http://www.cis.ohio-state.edu/htbin/rfc/rfc2109.html
plutôt abscons...
Nom et
valeur : sont de chaînes de caractères standards. La valeur d'un
cookie suit les règles de constitution des URL, il faudra donc utiliser
les fonction escape() et unescape() pour en manipuler la valeur.
Date
d'expiration : comme son nom l'indique, doit être donnée sous
la forme « Wdy, DD-Mon-YY HH:MM:SS GMT ». Pour détruire un
cookie, on lui affecte une date du passé !
Domaine
: Par défaut, le cookie est la propriété du domaine qui l'a
posé www.machintruc.com ne pourra pas lire les cookies posés par
www.truc.net, pour des raisons de sécurité.
Chemin
d'accès : permet de limiter encore plus la possibilité d'un
cookie d'être lu par d'autres pages.
Javascript
Pour créer
un cookie on utilise document.cookie ="monCookie=qqChose;".
On a alors le cookie de nom 'monCookie' dont la valeur est 'qqChose'.
On en retrouvera la valeur par manipulation de la chaîne obtenue par document.cookie
; par l'utilisation de substring, charAt, indexOf et lastIndexOf.
Par exemple pour conserver la date courante de la visite sur le site pendant un
mois on va écrire cela :
<SCRIPT
LANGUAGE="JavaScript">
var dateDuJour = new date();
var dateExpire = new Date();
dateExpire.setMonth(dateExpire.getMonth()+1);
qqChose = "date_last_visit=" + escape(dateDuJour);
qqChose += ";expires=" + dateExpire.toGMTString;
document.cookie = qqChose;
</SCRIPT>
Cela devient
vite fastidieux à manipuler, et plutôt que de réécrire
nos fonctions et que le Net regorge de scripts manipulant les cookies, nous n'avons
que l'embarras du choix pour nous constituer une petite librairie et réutiliser
les codes.
J'utilise
cette famille de fonctions pour gérer les cookies :
function
SetCookie ( name, value, expires, path, domain, secure)
{
szCookie = name + "="
+ escape (value) +
((expires)
? "; expires=" + expires.toGMTString() : "")
+
((path)
? "; path=" + path : "") +
((domain)
? "; domain=" + domain : "") +
((secure)
? "; secure" : "");
document.cookie
= szCookie;
}
function GetCookie (name) {
if ( document.cookie)
{ // Le cookie est-il valide ?
index
= document.cookie.indexOf( name);
if
( index != -1) {
nDeb
= (document.cookie.indexOf( "=", index) + 1);
nFin
= document.cookie.indexOf( ";", index);
if
(nFin == -1) {nFin = document.cookie.length;}
return
unescape(document.cookie.substring(nDeb, nFin));
}
}
return null;
}