Ecrire les cookies

[ 8 commentaires]

Comme son nom l'indique, la fonction EcrireCookie, dont le code est fourni ci-dessous, écrit un cookie. Elle permet de définir les attributs du cookie détaillés à la page précédente. S'il ne sont pas spécifiés, elle positionne les attributs optionnels à leur valeur par défaut. Ce script est à insérer entre les balises </title> et </head> de vos pages HTML qui placent des cookies.

<script type="text/javascript" language="JavaScript">
<!--
function EcrireCookie(nom, valeur)
{
var argv=EcrireCookie.arguments;
var argc=EcrireCookie.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(valeur)+
((expires==null) ? "" : ("; expires="+expires.toGMTString()))+
((path==null) ? "" : ("; path="+path))+
((domain==null) ? "" : ("; domain="+domain))+
((secure==true) ? "; secure" : "");
}
//-->
</script>

Pour écrire un cookie, il suffit maintenant d'appeler la fonction EcrireCookie depuis le corps de la page HTML. Voici quelques exemples de scripts, à insérer entre les balises <body> et </body>:

Exemple#1

<script type="text/javascript" language="JavaScript">
<!--
EcrireCookie("dejavenu", "oui");
//-->
</script>
• Le cookie dejavenu prend la valeur "oui".
• Aucune date d'expiration n'étant spécifiée, il expirera à la fin de la session en cours du navigateur.
• Son chemin d'accès, non spécifié, est celui de la page HTML qui l'écrit.
• Son domaine de validité, non spécifié, est celui de la page HTML qui l'écrit.
• Secure n'étant pas spécifié, il est accessible par une connexion non sécurisée (HTTP).

Exemple#2

<script type="text/javascript" language="JavaScript">
<!--
password=...
...
date=new Date;
date.setMonth(date.getMonth()+1);
EcrireCookie("motdepasse", password, date);
//-->
</script>
• Le cookie motdepasse prend la valeur de la variable password initialisée plus haut dans le script (par exemple saisie dans un formulaire).
• Il a une validité d'un mois. A noter l'utilisation de la variable date, qui après initialisation se voit attribuée sa valeur actuelle plus un mois, grâce aux fonctions getMonth() et setMonth(). C'est la fonction EcrireCookie qui se charge de sa conversion au format GMT.
• Son chemin d'accès, non spécifié, est celui de la page HTML qui l'écrit.
• Son domaine de validité, non spécifié, est celui de la page HTML qui l'écrit.
• Secure n'étant pas spécifié, il est accessible par une connexion non sécurisée (HTTP).

Exemple#3

<script type="text/javascript" language="JavaScript">
<!--
date=new Date;
date.setFullYear(date.getFullYear()+10);
EcrireCookie("nombredevisites", 1, date, "/");
//-->
</script>
• Le cookie nombredevisites prend la valeur 1.
• Il a une validité de 10 ans. Comme pour le script précédent, la variable date se voit attribuée sa valeur actuelle plus 10 ans, grâce aux fonctions getFullYear() et setFullYear().
• Son chemin d'accès est la racine du site. Il sera donc accessible depuis toutes les pages du sites, quels que soient leurs répertoires.
• Son domaine de validité, non spécifié, est celui de la page HTML qui l'écrit.
• Secure n'étant pas spécifié, il est accessible par une connexion non sécurisée (HTTP).

Exemple#4

<script type="text/javascript" language="JavaScript">
<!--
bid=...
...
date=new Date;
date.setDate(date.getDate()+2);
EcrireCookie("enchere", bid, date, null, null, true);
//-->
</script>
• Le cookie enchere prend la valeur de la variable bid initialisée plus haut dans le script (par exemple saisie dans un formulaire).
• Il a une validité de 2 jours. Comme pour les 2 scripts précédents, la variable date se voit attribuée sa valeur actuelle plus 2 jours, grâce aux fonctions getDate() et setDate().
• Son chemin d'accès étant spécifié à null, il prend sa valeur par défaut, c'est à dire celui de la page HTML qui l'écrit.
• Son domaine de validité étant spécifié à null, il prend sa valeur par défaut, c'est à dire celui de la page HTML qui l'écrit.
• Secure étant positionné à la valeur true, le cookie est n'accessible que par une connexion sécurisée (HTTPS).

cookiesLa page suivante présente et explique la fonction javascript à utiliser pour lire un cookie.

Vos réactions à cet article :::

le 11/05/2004 à 06:10De: ebola_13
je connais pas bien le PHP, jvois bien comment ecrire le cookie et cest super, mais comment lire qd la personne charge la page.
kelke chose comme <BODY onload="liscookie()" ?
le 08/10/2004 à 23:11De: Jerb [Site web]
C'est dommage que ça marche que pour le php.
le 13/10/2004 à 11:22De: Serge
Excusez moi ebola_13 et Jerb, mais le langage utilisé ici est du Javascript, donc, comprenons nous bien, ça fonctionne sur n'importe quel type de page : ASP, PHP, HTML, etc. Et dans le cas d'une page HTML, pas même besoin d'un serveur, c'est le navigateur qui execute ce script. Faites donc l'essai vous verrez !
Serge.
Ps : Merci à l'auteur pour ce tuto clair et efficace !
le 17/12/2004 à 01:53De: wallou_gt [Site web]
A little question:
Pour créer un cookie de session, on écrit EcrireCookie("test","999"); ca c bon.
Mais si l'on ne se trouve pas à la racine du site(ex: /toto/) et que l'on souhaite que ce cookie de session soit valabe à la racine, est-ce exact d'écrire:
EcrireCookie("test","999",null,"/");
C'est à dire, ext-ce ke 'null' de cet exemple prend la valeur de la date à laquelle il a été créé??
le 17/12/2004 à 04:00De: wallou_gt [Site web]
Je voulais rajouter deux petites choses:
1°) Je tenais à dire que les cookies par le javascript sont bien plus pratique à utiliser que par le PHP (en ayant les fonctions ci-dessus, ca facilite bien sur les choses :) )
2°) Lors de la création d'un cookie (supposé) de session {EcrireCookie("test","999"); } mon firewall le considère comme un cookie persistent car il le bloque.
J'ajoute que mon firewall(Zone Alarm Pro) est configuré pour ne laisser passer QUE les cookies de session!!
Je n'ai pas ce problème avec PHP {setcookie("test","999");}
Quelqu'un aurait-il une solution à mon pb?
Encore une fois merci d'avance.
Seb.
le 01/03/2005 à 11:24De: JavaStrict
Merci à l'auteur de bien vouloir corriger les erreurs dans ces exemples qui pourraient retarder bien des utilisateurs. Il est tellement plus agréable de savoir que l'on peut compter sur un morceau de code dont on est sûr ... plutôt que de perdre du temps à traquer les fautes de frappe.
Page : http://www.actulab.com/ecrire-les-cookies.php
Fonction "EcrireCookie"
Ligne : ((secure==true) ? "; secure" : "");
Correction : ((secure==true) ? "; secure" : ""));
Et sur la même page :
Exemples 2,3 et 4
Ligne : date=new Date;
Correction : date=new Date();
Rien à ajouter. ;-)
le 01/03/2005 à 11:43De: JavaStrict
Je vous prie de m'excuser pour mon post précédent, l'erreur mentionnée sur la ligne "secure" n'en est pas une. Le code original est ok, l'erreur obtenue de mon côté n'est dûe qu'à une erreur d'attention, ce qui prouve une fois encore que c'est en forgeant que l'on devient forgeron ...
Bonne navigation !
le 09/03/2005 à 03:09De: Orioli sarl [Site web]
et c'est pas dire, mais qu'est ce que qu'il faut forger...
Moi j'en suis encore à du http classique, pourtant il va bien falloir que je me mette à utiliser le javascript et le php. C'est pourtant si facile le javascript et le php ... quand on regarde les autres le faire ;-)
------------------------
Carte de Visite

Ajoutez un commentaire en direct :::

Il est temporairement impossible de poster un commentaire: nos modos sont en vacances. A bientôt;)

[Envoyer cette page à un ami | Créer un lien vers cette page | Ajouter cette page à vos favoris]
36.833.777 pages vues - Déjà 1.853 aujourd'hui - 12 visiteurs connectés
100 dossiers en ligne - Copyleft © 2003-2008 ActuLab :::