8768 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Je suis étudiante et pour l'un de mes devoirs, je dois faire un panier virtuel en PHP. Pour supprimer un article, j'ai créé un lien vers une page "supprimer.php".

Dans cette page, le script vide la variable SESSION ['panier'] si le nombre d'éléments de cette variable est supérieur à 1.

Si le nombre d'éléments est égale à 1, il reste un seul article dans le panier et je veux le supprimer, donc le panier se vide complétement et le COOKIE ['panier'] qui enregistre le contenu du panier est supprimé.

Pour cela, je voulais faire :

unset $_SESSION ['panier'] = array(); // cet ligne fonctionne !

puis : setcookie ('panier', NULL, -1); //pour supprimer le cookie

header ('location:panier.php');
exit;

La redirection fonctionne, la SESSION ['panier'] est bien vide, mais le cookie existe toujours, et du coup le panier s'affiche avec le produit qu'on vient de supprimer. C'est comme si le cookie n'est pas mis à jour.

Pour contrer ce problème, au lieu de faire un setcookie ('panier', NULL, -1); dans la page "supprimer.php", je crée une $_SESSION['supprimer']='supprimer';

Dans la page panier.php, une condition isset ($_SESSION['supprimer']) applique le setcookie ('panier', NULL, -1);, suivi d'un rechargement de la page panier.php (en faisant un header ('location:panier.php'); exit;) pour mettre à jour le cookie. Là çà marche !

Pourquoi le cookie n'est pas mis à jour quand je passe par le page supprimer.php pour le supprimer ? Smiley langue
Modifié par anthyllide (14 Feb 2015 - 15:42)