[RESOLU] Cookies de sessions

Eléphanteau du PHP | 24 Messages

23 mai 2018, 13:55

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.

Eléphant du PHP | 385 Messages

23 mai 2018, 19:46

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; }

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

23 mai 2018, 19:49

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 !
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 24 Messages

23 mai 2018, 20:28

Merci,
pour votre aide
:wink: