Utiliser les cookies en JavaScript

cookie

Je développe actuellement un portail Internet pour un projet et j'utilise donc plusieurs technologies: PHP, Ajax, Javascript, HTML5, CSS, …

J'ai eu besoin de stocker des cookies en utilisant JavaScript et évidemment j'ai eu besoin de récupérer la valeur d'un cookie en JavaScript.

J'ai trouvé sur internet 2 fonctions qui permettent de gérer les cookies en JavaScript.

Ces fonctions ne sont pas compliquées mais pourquoi réinventer la roue 🙂

Créer un cookie en JavaScript

En JavaScript il est possible de créer des cookies afin de stocker des valeurs. Voici la fonction que j'utilise:

function SetCookie (name, value) {
	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=name+"="+escape(value)+	((expires==null) ? "" : ("; expires="+expires.toGMTString()))+
		((path==null) ? "" : ("; path="+path))+	((domain==null) ? "" : ("; domain="+domain))+((secure==true) ? "; secure" : "");
}

Les paramètres de la fonction sont:

  • name: qui correspond au nom du cookie
  • value: qui correspond à la valeur à assigner au cookie
  • expires: qui représente la date d'expiration du cookie
  • path: qui indique l'origine du cookie
  • domain: qui est le domaine du site internet
  • secure: qui précise si le cookie est protégé

Notez que seuls les paramètres name et value sont obligatoires.

Et voilà un exemple d'utilisation:

var pathname=location.pathname;
var myDomain=pathname.substring(0,pathname.lastIndexOf('/')) +'/';
var dateExp = new Date();
dateExp.setTime(date_exp.getTime()+(365*24*3600*1000)); // Ici on définit une durée de vie de 365 jours
SetCookie("moncookie","mavaleur",dateExp,myDomain);

Lire un cookie en JavaScript

Après avoir stocké un cookie, il est souvent nécessaire de pouvoir récupérer la valeur stockée.

Pour cela, j'ai trouvé 2 petites fonctions très sympa qui font tout le travail 🙂

function getCookieVal(offset) {
	var endstr=document.cookie.indexOf (";", offset);
	if (endstr==-1)
      		endstr=document.cookie.length;
	return unescape(document.cookie.substring(offset, endstr));
}
function GetCookie (name) {
	var arg=name+"=";
	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);
                i=document.cookie.indexOf(" ",i)+1;
                        if (i==0) break;}
	return null;
}

Pour l'utiliser, il suffit de préciser le nom du cookie:

var monCookie = GetCookie("moncookie");

Leave a Reply

Your email address will not be published. Required fields are marked *