Page 1 sur 1

Cookies de sessions

Posté : 23 mai 2018, 13:55
par yousss77
Salut,

comment se fait il qu'avec le code suivant en l'apparence correct ne fonctionne qu'à condition de retirer les accolades,
alors que normalement les accolades sont partie intégrantes des fonctions et ce malgré qu'elles ne sont pas obligatoires pour une seule instruction,

<?php
if (isset($_COOKIE['user'])) {
$nbr = $_COOKIE['user'] + 1; 
}

else {
$nbr = 1;
setcookie('user',$nbr,time() + 120);
}

echo $_COOKIE['user'];
et comment se fait il qu'avec ce code ci-dessous mon cookie s' incrémente une seule fois au rechargement des pages
à partir de 1 même avec rechargement ça ne s'incrémente plus ça bloque à 1
if (!isset($_COOKIE['nbr'])) {
$nbr = 1;
    setcookie('nbr',$nbr,time()+120);
echo 'on commence';
}
 else {
 $nbr = $_COOKIE['nbr']++;
 echo $nbr;
}
cordialement.

Re: Cookies de sessions

Posté : 23 mai 2018, 19:46
par kevin254kl
Bonjour,

Code : Tout sélectionner

<?php if (empty($_COOKIE['nbr'])) { $nbr = 1; setcookie('nbr',$nbr,time()+120); echo 'on commence'; } else { $nbr = ++$_COOKIE['nbr']; setcookie('nbr', $nbr ,time()+120); echo $nbr; }

Re: Cookies de sessions

Posté : 23 mai 2018, 19:49
par @rthur
Alors, je n'ai pas compris la 1ère question, mais par contre j'ai la réponse à la deuxième question (et peut être que ça t'aidera à débuguer la 1ère ;-) )

La raison est que pour qu'un cookie soit mis à jour il faut que tu le renvoies avec setcookie() pour écraser la précédente valeur.

Voici donc le code qui fonctionne :
if (!isset($_COOKIE['nbr'])) {
	$nbr = 1;
	setcookie('nbr',$nbr,time()+120);
	echo 'on commence';
}else{
	$nbr=$_COOKIE['nbr']+1;
	setcookie('nbr',$nbr,time()+120);
	echo $nbr;
}
##edit : Ah ah, kevin254kl a été + rapide que moi !

Re: Cookies de sessions

Posté : 23 mai 2018, 20:28
par yousss77
Merci,
pour votre aide
:wink: