Variable de session qui disparait [Résolu]

Signaler
Messages postés
414
Date d'inscription
lundi 19 juillet 2004
Statut
Membre
Dernière intervention
23 septembre 2014
-
Messages postés
414
Date d'inscription
lundi 19 juillet 2004
Statut
Membre
Dernière intervention
23 septembre 2014
-
Bonjour à tous.

Je souhaiterais ajouter un système de panier sur un site. J'ai donc fait une classe panier aui à priori fonctionne.
A l'arrivée sur le site, j'instancie cette classe, puis serialise l'instance dans $_SESSION['p'].

J'utilise XmlHttpRequest pour qu'à tout moment l'utilisateur puisse afficher le nombre de produits dans son panier : j'appelle un fichier qui récupère le contenu de $_SESSION['p'], le déserialise et en affiche le nombre de produits. Tout ceci semble fonctionner. Quand j'ajoute un produit au panier, puis que je fais afficher le nombre de produits, c'est OK.

Cependant, si je change de page, le panier "se vide". On dirait que $_SESSION['p'] disparait.

A l'arrivée sur le site :
 session_start();
require "ressources/web/panier_class.php";
 $caddie = new Panier();
 $p   = serialize ($caddie);
 session_register ($p);

Ajout d'un produit au panier :
 session_start();
 require "panier_class.php";
 $caddie = unserialize ($_SESSION['p']);
 $caddie->ajouter ($_POST['$id'], $_POST['qte']);
 $_SESSION['p'] = serialize ($caddie);

Affichage du nombre de produits :
 session_start();
 require "panier_class.php";
 $caddie = unserialize ($_SESSION['p']);
 $tmp  = $caddie->quantite ("");
 if ($tmp) 
  if ($tmp > 1) echo "Votre panier contient
".$tmp." articles";
  else echo "Votre panier contient
1 article"; 
 else echo "Votre panier est vide";
 $_SESSION['p'] = serialize($caddie);

Pour résumer : A chaque fois que je fais afficher le nombre de produits, ce nombre est récupéré dans ma variable de session, donc celle-ci existe bien. Alors pourquoi disparait-elle quand je change de page?

Quelqu'un aurait une idée?
Merci d'avance

1 réponse

Messages postés
414
Date d'inscription
lundi 19 juillet 2004
Statut
Membre
Dernière intervention
23 septembre 2014

Comme quoi ça aide d'exprimer son problème

A chaque changement de page, une nouvelle instance de panier était créée et écrasait l'ancienne.

Solution (dans le cas improbable où ça arriverait à d'autres) :
 if (!isset ($_SESSION['p'])) {
     $caddie = new Panier();
     $p   = serialize ($caddie);
     session_register ($p);
 
     $_SESSION['p'] = serialize ($caddie);
 }