Bonjour,

Le but du code est d'effacer le contenu de $_SESSION si une certaine clé n'existe pas ou si elle ne contient pas la bonne valeur, valeur de type constante définie par l'instruction define.

Le code suivant ne fonctionne pas :

Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
if (!isSet($_SESSION['ProductId'])) $_SESSION['ProductId']='';
if ($_SESSION['ProductId'] != ProductId){
   foreach ($_SESSION as $cle=>$value) unset $_SESSION[$cle];
}
$_SESSION['ProductId']=ProductId;

En fait, avec ce code, $_SESSION['ProductId'] est perdu à chaque rechargement de la page (ce n'est pas qu'il contient une mauvaise valeur, mais plutot qu'il n'est pas défini). Par contre le code ci-dessous fonctionne bien

Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
if (!isSet($_SESSION['ProductId'])) $_SESSION['ProductId']='';
if ($_SESSION['ProductId'] != ProductId){
   reset ($_SESSION);
   while (list($cle,$value) = each ($_SESSION)) unset ($_SESSION[$cle]);
}
$_SESSION['ProductId']=ProductId;

Et je ne comprend pas pourquoi le premier code ne convient pas ... pouvez vous m'éclairer ?