LES  COOKIES

Structure de cookie   Créer un cookie Lire un cookie Cookie à action mixte
Autres Exemples

Structure d'un cookie

Définition:
Un cookie est un ensemble d'infos stockés sur le disque dur de l'utilisateur pour faciliter la navigation mais aussi pour être reconnu. Il ne peut contenir que ce que l'utilisateur a bien voulu donner et ne peut en aucun cas transporter un virus ou des informations confidentielles.

Il comprend :

1 - UN NOM OBLIGATOIRE:

défini dans le champ name, c'est une valeur alphanumérique quelconque qui ne doit pas contenir de point virgule, de virgule, de caractère blanc (ex valide : "Cc=R021%_cOnCePt")

 document.cookie=name+"="+value;

auquel peuvent s'ajouter d'autres paramètres facultatifs , à savoir :

2 - UNE DATE D'EXPIRATION:

définie dans le champ expires, indique jusqu'à quelle date le cookie peut être utilisé. C'est une valeur date exprimée sous la forme Sun,JJ-MM-AA HH:MM:SS GMT, le jour de la semaine étant en anglais abrégé (Sun, Mon, Tue, ...)
Si on ne précise pas de date d'expiration, le cookie expire à la fin de la session en cours.

 

// date d'expiration le 1er Janvier de l'an 2002 :
var dateExp="Sat, 01-Jan-2002 08:00:00 GMT";
ou
// date expiration 1 mois
var expdate=newDate();
var dateExp= expdate+(31*24*60*60*1000)

document.cookie=name+"="+value+";expires="+dateExp;

3 - UN CHEMIN :

défini dans le champ path, indique la partie de l'URL pour lequel le cookie est valable. Si on ne précise pas de chemin, c'est celui du chemin du document créant le cookie qui est utilisé.
Par exemple, sur le serveur www.serveur.com, on désire que le cookie de nom cook, initialisé à essai ne soit accessible que pour les documents situés dans le répertoire concept

//On est dans le document http://www.serveur.com/concept/index.htm
//Ce cookie sera "visible" à partir de http://www.serveur.com/concept/news.htm
//mais ne le sera pas depuis une autre adresse

document.cookie="cook=essai;expires=Wed, 31-Dec-1997 23:59:59 GMT;path=concept";

4 - UN DOMAINE:

défini dans le champ domain, indique le domaine (=le serveur, ou une partie de l'adresse du serveur) pour lequel le cookie est valable. Effectivement, un serveur peut créer un cookie qui sera lu par un autre serveur. Si on ne définit pas de domaine, c'est celui du serveur créant le cookie qui est pris en compte

 //On est dans http://www.serveur.com/concept/index.htm

//On désire que le cookie "cook_cool" soit lisible depuis le site "www.essai.com"
//www.serveur.com ne pourra plus lire le cookie, par contre www.essai.com le pourra

document.cookie="cook_cool=sebweb;expires=Wed, 31-Dec-1997 23:59:59 GMT;domain=www.essai.com";

Un navigateur comme Netscape a prévu la possibilité d'interdire ce genre d' "entente" entre serveurs. Cette distinction n'existe pas dans MSIE (versions actuelles : 4).

5 - UN ATTRIBUT DE SECURITE:

défini par le "flag" secure, indique (s'il existe) que le cookie ne sera transmis que si la connexion vers le serveur est sécurisée (protocole HTTPS et non pas HTTP)

 //le cookie "cook_cool" ne sera transmis que si la connexion est effectuée via https
document.cookie="cook_cool=sebweb;expires=Wed, 31-Dec-1997 23:59:59 GMT;secure";

6 - DES LIMITATIONS:

Elles concernent la taille et le nombre de cookies pouvant être stockés sur chaque poste client

300 cookies au total

4 KO par cookie

20 cookies par serveur ou domaine

                                                                                      

Créer et Ecrire un cookie

  Voici comment positionner et créer votre cookie à l'aide de la fonction setCookie(name,value,expdate) comme le montre l'exemple :

Dans le document HTML où on aura inséré le code ci-dessus, il suffit de rajouter d'autres scripts d'écriture, par exemple :

 <a href="javascript:SetCookie('nom','René')"><img src="gif/test1.gif" width="97" height="52">Cliquez-ici</a>

Cette ligne crée le cookie nom et lui affecte la valeur René quand on clique sur l'image serveur.gif
Dans un autre document HTML, en ayant réécrit le script contenant les fonctions de base initiales, l'ajout du script suivant provoquera l'affichage de la valeur du cookie concept :

                                

Lire un cookie

Voici comment exploiter et lire vos cookies à l'aide de la fonction GetCookie(value) comme le montre l'exemple :

 

Si vous le souhaitez vous pouvez effacer un cookie en ligne :

 function DeleteCookie (name) {
var exp = new Date();
exp.setTime (exp.getTime() - 1);
var supval = GetCookie (name);
if (supval != null)
document.cookie = name + "=" + supval + "; expires=" + exp.toGMTString(); 
}
document.write('<a href="javascript:DeleteCookie()">Effacer</a>')

                                

Cookies à actions Mixtes

Création et lecture sur la même page...

IMPORTANT: vous devez, pour exploiter, lire, écrire vos cookies sur une même page utiliser les fonctions GetCookie(value) mais aussi setCookie(name,value,expdate) sur le même document.

ex : compteur de visites

  

// placer ici la partie non modifiable de la fonction setCookie(name,value,expdate)
// placer ici la partie non modifiable de la fonction GetCookie(value)

var expdate = new Date ();
var biscuit = GetCookie("biscuit") ;
expdate.setTime (expdate.getTime() + (10 * 24 * 60 * 60 * 1000));//10 jours
(GetCookie("biscuit") == null )? (SetCookie("biscuit",1,expdate)) : (SetCookie("biscuit",++biscuit,expdate)) ;
var biscuit = GetCookie("biscuit");
document.write ("Cette session est votre" + biscuit + " visite.");

                Autre exemple              

Soit un site avec une page d'accueil, puis un certain nombre d'autres pages, toutes de même niveau, et l'on veut que l'utilisateur "élise" une page favorite, qu'il pourra atteindre ensuite d'un simple click depuis la page d'accueil pour les visites futures.


Dans toutes les pages concernées, inclure le script suivant :
(ne pas oublier les fonctions de base newCookie et getCookie)

  
// placer ici la partie non modifiable de la fonction setCookie(name,value,expdate) 
function recFavoritePage() { 
//URL de la page en cours
var URL=this.location.href;
//mémorisation de cette page dans le cookie 'Favorite'
setCookie('Favorite',URL);
}

suivi de ce lien, à l'endroit où l'on veut placer le bouton d'action de mémorisation

 <a href="javascript:recFavoritePage()">
<img src="favorite.gif">Cliquez-ici si cette page est votre favorite</a>
 

Et dans la page d'accueil, inclure le script suivant

 // placer ici la partie non modifiable de la fonction GetCookie(value)</strong>
function goFavoritePage() {
//URL de la page favorite
var URL=getCookie('Favorite');
//Saut vers cette page (si non vide)
if (URL!="") {document.location.href=URL

Google