javascript: ecrire ou lire un cookie en mémoire

javascript: ecrire ou lire un cookie en mémoire - HTML/CSS - Programmation

Marsh Posté le 28-02-2007 à 19:32:38    

bonjour
 
j'ai un bout de code a ecire en javascript pour résoudre un problème dont j'ignore encore comment y parvenir et ne maitrisant pas trop bien le javascript je me perds dans toutes ses méandres
 
une idée qui pourrait déboucher serait d'utiliser un cookie en mémoire mais j'arrive pas à le crée convenablement j'expose ce que je veux faire de cette facon
 
J'ai deux pages html on va les appeller page1.html et page2.html
 
dans le code et dans le body de la page1
 
on trouve
<A href ="page2.html"> vers la page 2 </A>
 
dans le head de la page 1 j'ai dans des balises script javascript
une variable toto="le soleil"
 
et je voudrais juste apres cette variable fabriquer ce maudit cookie contenant juste la valeur de la variable toto (pas d'autre viarable dans un premier temps-voir question3)  
 
 je suppose qu'il faut écrire un truc du genre document.cookie = qqch
 
question 1: Pouvez vous me dire ce que je dois écire a la place de qqch ?
 
dans la page 2
nous avons un body avec du texte peu importe
 
je veux dans le head et bien sur dans des balises script qui vont bien
1) récupérer le contenu du cookie qui a ete crée dans la page 1 appelante (cad la chaine soleil)
2) l'affecter dans une variable qu'on va appeler planete pour fixer les choses
 
question 2: pouvez  vous me dire ce qu'il faut donc ecrire pour faire ca?
 
3eme question  
si ce qui precede est faisable
je rajoute maintenant dans le body de la page 1 une seconde balise <A> vers une page3.html du meme genre que pour page2 et dans le head de page 1 une variable tata="lune"
 
si je veux maintenant avoir le mot lune au lieu de soleil lorsqu'on clique sur ce second lien vers page3 et qu'on se retrouve sur page3,  
 
est ce que je peux créée un second cookie que je pourrais ensuite accedé par son nom si oui comment fait on ca
 
ou bien dois je ecrire dans un unique cookie soleil et lune et suivant la page ne pas lire au meme endroit dans la chaine?  
(là je crois avoir lu pas mal de choses  qui pour le moment sont assez claires qui expliquent avec split et substr comment on peut découper la chaine)
 
 
Merci d'avance a tous ceux qui maitrisent ce langage qui voudront bien m'aider et m'expliquer si tout ca est possible et comment on met ce petit exemple en pratique

Reply

Marsh Posté le 28-02-2007 à 19:32:38   

Reply

Marsh Posté le 01-03-2007 à 12:36:38    

Personne ne sait comment on se sert de cette instruction?
 
document.cookie

Reply

Marsh Posté le 01-03-2007 à 16:24:08    

Si j'ai pas été assez clair dans ce que je cherche à faire pour que vous puissiez m'aider, demandez moi des précisions j'apporterai les commentaires en conséquence si c'est possible

Reply

Marsh Posté le 01-03-2007 à 16:31:26    

Reply

Marsh Posté le 01-03-2007 à 16:51:52    

merci anapajari pour ton lien j'ai lu le contenu ca ressemble a des choses que j'avais lu par ailleurs et que j'ai déjà essayé  
 
j'avais ecris ca dans mon code de la page 1
 
document.cookie = "monsite = toto"; et ensuite comem ca marchait pas j'ai aussi essayé ca
document.cookie = "monsite = " +toto;
 
dans la page2 planete = document.cookie;
 
tout ca ne donne rien sans trop que j'en saisisse les raisons
est ce que ce que je lie au lien indiqué veut dire qu'en fait il faudrait que j'ecrive dans page1:
 
document.cookie = "name = monsite"
document.cookie = "toto = soleil";
 
et dans page2 var planete = document.cookie;

Reply

Marsh Posté le 01-03-2007 à 17:21:28    

si dans la page 2 tu écris:

Code :
  1. car planete = document.cookie


tu vas te retrouver avec "monsite=toto" dans ta variable.
Mais qu'essaye tu de faire ensuite avec planète? ça donne rien ça veut dire quoi?

Reply

Marsh Posté le 01-03-2007 à 17:40:41    

non ce que je veux dans la variable planete qui est definie sur la page 2 c'est la valeur de toto qui elle a ete affectée dans page 1 c'est a dire soleil ou au pire "toto = soleil"
 
ce que je veux faire avec planete ensuite dans page 2 si c'est absolument necessaire que j'indique quelque chose  pour ce probleme de définition de cookie
 
on va fixer les choses par cette instruction  
 
document.write("on voit le:" +planete);
 
qui doit afficher "on voit le:soleil" (ou au pire "on voit le:toto=soleil" que je parserais dans ce cas ensuite pour enlever toto=)

Reply

Marsh Posté le 02-03-2007 à 15:23:43    

Bon alors visiblement malgré le lien que tu m'as envoyé et les essais que j'ai pu faire qui n'ont rien donnés
 
J'arrive pas a ecrire une syntaxe correcte pour créée et manipuler un cookie en javascript
 
 avec en page1 l'instruction qui créée le cookie et qui y met la valeur de de la variable toto
 
et en page 2 l'instruction qui lit ce cookie et affecte a planete, la chaine qu'il contient
 
pour en définitive réaliser lorsque on clique sur le lien de la page 1 qui mene à la page2 une transmission de la valeur de la variable toto de la page1 à la page2, j'ai lu des autres articles sur ce sujet qui semble possible mais j'arrive pas à le mettre en oeuvre sur l'exemple tres simple que j'ai mentionné ici, donc merci à anapajari pour ses interventions et a tous ceux qui voudront bien me donner les instructions que je dois ecrire pour cet exemple et m'aider ainsi a y voir pus clair sur la facon de se servir de ces cookies

Reply

Marsh Posté le 06-03-2007 à 18:25:02    

personne ne connaissant javascript ici, etant en mesure de me dire plus precisement quelles instructions je dois ecrire dans cet exemple simple que j'ai décrit
 
afin de créée et d'ecrire dans le cookie puis de le relire ensuite?
 
je continue de patoger a essayer de comprendre ce que je lis ailleurs et tenter de nouvelles modifications de syntaxe mais rien de ce que je fais pour faire ce cookie ne produit de resultat votre aide a tous qui veulent bien m'aider me serait précieuse

Reply

Marsh Posté le 06-03-2007 à 18:46:45    

[:w3c compliant]
Allez c'est la fin de journée s'cadal !
Page1:

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2.   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
  4. <head>
  5.   <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  6.   <title>Exemple</title>
  7.   <script type="text/javascript">
  8.   window.onload = function(){
  9.     document.cookie = 'moncookie=choucroute; expires=Thu, 4 Aug 2007 00:00:01 UTC; path=/';
  10.   }
  11.   </script>
  12. </head>
  13. <body>
  14. <a href="page2.html">page 2</a>
  15. </body>
  16. </html>


page 2:

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2.   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
  4. <head>
  5.   <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  6.   <title>Exemple</title>
  7.   <script type="text/javascript">
  8.   window.onload = function(){
  9.     var cookies = document.cookie.split(';');
  10.     var monCookie = cookies[0].split('=');
  11.     alert('Variable:['+monCookie[0]+'] vaut ['+monCookie[1]+']');
  12.   }
  13.   </script>
  14. </head>
  15. <body>
  16. </body>
  17. </html>

Reply

Marsh Posté le 06-03-2007 à 18:46:45   

Reply

Marsh Posté le 07-03-2007 à 15:10:47    

merci pour ce code j'avais pu  lire un code similaire sur une autre page auparavant mais merci de m'avoir consacré du temps
 
il repond pas exactement a l'exemple que je proposais mais en faisant une synthèse de tous les éléments que j'avais
 
mon code c'est mis a fonctionner sans que je change quelque chose  
 
ce qui marche donc est en  
page1:
var toto = "le soleil";
var tata = "la lune";
document.cookie = toto;
 
et en page2:
document.write("on voit le:" +planete);
 
OK donc par rapport à ce que je voulais faire au début, je reviens donc sur ma question3 où je veux pouvoir dans un second temps afficher en page3 lune à la place de soleil
 
questionA: je crois comprendre maintenant mais tu vas me le confirmer, je prefere (ou quelqu'un d'autre), je ne peux créée en fait en page1 qu'un seul cookie donc si je veux dans des cookies les contenus de toto et tata, il faut bien que je les mette dans un unique cookie séparé par un caractère de mon choix (a priori le ;) ou bien est ce que je peux créée deux cookies differents en page1?
 
Question B: j'avais cru comprendre que la syntaxe que je popose à l'instant écrivait le cookie en memoire et non sur disque, vrai ou faux?
 
Par rapport au code que tu m'as proposé j'ai aussi d'autres questions
 
Question C: la facon de manipuler le cookie dans ce code et en particulier en indiquant une date de validité,veut il dire que ce cookie est ecrit sur disque?
 quand j'ai testé ton code en local, je n'ai pas retrouvé trace du fichier sur mon disque et du reste je vois pas trop quel nom ton code lui aurait donné  
 
Question D: si ton code (ou le mien) n'ecrit pas ce cookie sur disque met le met juste en memoire ce que je souhaite, dans quelles conditions disparait il de la memoire? Faut il fermer le navigateur, la page ou eteindre la machine ou peut etre autre alternative?
 
Question E: quelle est l'utilité de toute cette partie du code ( ci apres )d'une maniere plus générale a mon probleme puisque j'ai constaté qu'on le retrouve ou a peu de chose pres sur de nombreux documents html publique que j'ai pu trouver sur le net mais jusqu'a maintenant je ne l'ai jamais mis sur mes pages et me suis toujours demandé ce qui pouvait se passer en ne le mettant pas ou en le mettant (et en particulier dois je comprendre qu'en ne le mettant pas certaines balises ou fonctionnement html pourraient avoir un comportement eratique suivant l'environement client qui lit mes pages)
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
<head>  
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />

Reply

Marsh Posté le 07-03-2007 à 15:13:51    

j'ai fait un oubli en page du code qui marche mais tu aurras rectifié
il manque bien sur  
var planete = document.cookie;  
 
comme tu le proposais d'ailleurs

Reply

Marsh Posté le 07-03-2007 à 15:25:20    

D'abord un lien: http://www.quirksmode.org/js/cookies.html
Tu y trouveras une réponse à quasiment toutes les questions que tu te poses!
Mais en résumé:
A: tu peux créer autant de cookies que tu veux
B: sur "le disque" voir le point "How cookies work"
C: voir B
D: voir B
E: voir: http://openweb.eu.org/articles/differentes_dtd/

Reply

Marsh Posté le 07-03-2007 à 15:30:13    

page2 bien sur pour l'erratum et ";" pour le séparateur et non un smiley
 
la questionD sous entend outre la destruction du cookie que l'on doit controler si on le crée,  
une question F sur sa reinitialisation durant toute la navigation du client sur les pages du site, a priori de ce que je comprends chaque fois que la page1 va etre chargée le cookie va t'il bien contenir la chaine que je lui aurais affecté au premier chargement et s'écraser d'elle meme pour s'y remettre (contenir donc qu'une seule occurence de la chaine a mettre dans le cookie), ou bien chaque chargement de la page1 comporte le risque de concatener des valeurs de chaines identiques de telle sorte que si je suis revenu 3 fois a la page1 par exempe j'aurai en definitive a cet instant dans le cookie comme chaine, 3 fois la chaine initiale concaténée

Reply

Marsh Posté le 07-03-2007 à 17:04:49    

fais des plus gros patés sans ponctuation, là j'ai du mal à lire :o

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed