Le code ci-dessous décrit la syntaxe JavaScript d'écriture et de lecture
de cookies (télécharger
le script) :
function SetCookie(nom, valeurs)
// Crée (ou modifie) un cookie
// nom doit être distinctif
// valeurs est une chaine de valeurs séparées par des virgules
// d'autres paramètres sont optionnels :
// * expires : durée de vie en millisecondes
// * path : chemin du cookie
// * domain : domaine du site
// * secure : sécurisé ou pas
// La commande d'utilisation complète est donc :
// SetCookie(monCookie, valeurs, null, "/monChemin", null, true);
{
var argv = SetCookie.arguments;
var argc = SetCookie.arguments.length;
var expires = (argc > 2) ? argv[2] : null;
var path = (argc > 3) ? argv[3] : null;
var domain = (argc > 4) ? argv[4] : null;
var secure = (argc > 5) ? argv[5] : false;
document.cookie = nom + "=" + escape(valeurs) +
((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
((path == null) ? "" : ("; path=" + path)) +
((domain == null) ? "" : ("; domain=" + domain)) +
((secure == true) ? "; secure" : "");
}
function getCookieVal(offset)
// fonction utilisée par getCookie()
{
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1)
endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}
function GetCookie(nom)
// recherche un cookie et renvoie un tableau des valeurs si le cookie existe, null sinon
{
var arg = nom + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen)
{
var j = i + alen;
if (document.cookie.substring(i, j) == arg)
return getCookieVal(j).split(/,/);
i = document.cookie.indexOf(" ", i) + 1;
if (i == 0)
break;
}
return null;
}
function DeleteCookie(nom)
// pour détruire un cookie, on met sa date d'expiration à la date courante
{
var exp = new Date();
exp.setTime (exp.getTime() - 1);
var cval = GetCookie (nom);
if (cval != null)
document.cookie = nom + "=" + cval + "; expires=" + exp.toGMTString();
}
function ExpiresDays(jours)
{
var date = new Date();
date.setTime(date.getTime() + (jours * 24 * 3600 * 1000));
return date;
}