8725 sujets

Développement web côté serveur, CMS

Bonjour

Je veux faire + 1 sur un cookie existant initialisé à la valeur 56 :

$score = $_cookie['accesJeux']['nombre'] + 1;
Setcookie("accesJeux[nombre]", $score);
   echo "score: ".$score."<br>";
   echo "cookie: ".$_cookie['accesJeux']['nombre']."<br>";


Le résultat :

score: 57
cookie: 56

montre que le cookie n’est pas incrémenté.

Par avance merci de votre aide, je sèche sur un sujet « bateau ».

Francois
C'est normal, l'écriture dans le cookie se fait à la fin du script (quand le contenu du cookie est envoyé au client). Recharge la page et tu verras qu'il est bien incrémenté.
Modifié par jb_gfx (02 Feb 2013 - 21:23)
Merci de ta réponse mais ça ne fonctionne tjs pas.

Quand tu proposes de recharger la page, à quoi penses tu? J'ai fait Rafraîchir, sans résultat.

Ma structure:
- une page maître appelle une page de service par un lien <a href target=_blank
- la page de service incrémente le cookie de 1

Quand je ferme la page de service, la page maître affiche une valeur inchangée au cookie.

Francois
Hello,

comme le dit jb_gfx la cookie.php" rel="noopener" >fonction setcookie php ne crée / modifie le cookie qu'à la fin du script et la nouvelle valeur n'est disponible qu'au réaffichage de la page. Il suffit de le savoir et d'utiliser ta variable $score dans ton script.

Ton problème vient de ce que ta page "maître" n'est pas actualisée à la fermeture de ta nouvelle page et donc que la lecture de la nouvelle valeur du cookie ne se fait pas...

Tu pourrais regarder du côté de header ou du JavaScript.
Modifié par Heyoan (03 Feb 2013 - 08:39)
bonjour et merci de votre aide.

Si je vous comprend bien, il faudrait que ma page de service, où le cookie est incrémenté, rappelle la page maître d'une manière ou d'une autre: header, referer, ..., ce qui la rafraîchirait.

Je vais essayer dans ce sens là.

Francois
Une bonne et une mauvaise nouvelle.

J'ai créé deux petites pages de test, maître et service; l'une appelle l'autre, elles utilisent le cookie et celui ci est bien incrémenté à chaque interaction entre les deux pages.

Quand j'utilise le même cookie dans mes pages réelles, une dizaine de pages qui se succèdent, le cookie n'est pas incrémenté à la page suivant celle qui incrémente.

Je n'arrive pas à trouver le problème; si vous aviez une idée d'une cause éventuelle.

Francois
J'ai pris la démarche classique de partir avec quelques lignes de code et d'en ajouter 2 ou 3 entre chaque test pour voir où ça coince.

Je suis parti de ma petite fonction de service pour aller jusqu'à ma première page complète en une dizaine d'étapes.

Et je suis arrivé au bout, avec un cookie qui s'incrémente, sans avoir trouvé où se trouve le problème.

En comparant ces deux fichiers, service et page complète, avec Notepad++ je ne trouve rien pour le moment.

Je vais creuser en cherchant à m'expliquer les signes et couleurs affichés par Notepad++ dans cet affichage comparé.

Francois
J'ai découvert qu'un cookie est accessible dans le même dossier que celui où il a été créé, sauf si on fait une spécification dans le but d'étendre ce périmètre.

Je crée maintenant avec:

Setcookie("accesJeux[nombre]",$valeurcookie,(time() + $dureecookie*60*60),"/");


Mais le cookie est bien incémenté si la fonction qui l'incrémente est dans le même répertoire que celle qui l'a créé; par contre, si la fonction qui l'incrémente est dans un sous-répertoire de celui où il a été créé, il n'est toujours pas incrémenté.

En dépit de la spécification '/'.

Merci par avance de vos suggestions.

Francois