Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/11/2006, 15h24   #1
Membre du Club
 
Inscription : juillet 2005
Messages : 123
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 123
Points : 55
Points : 55
Par défaut Utilisation de foreach avec les sessions sous PHP5

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 :
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 :
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 ?
frochard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2006, 01h14   #2
Membre éclairé
 
Avatar de genova
 
Inscription : septembre 2004
Messages : 487
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 487
Points : 397
Points : 397
Envoyer un message via MSN à genova
J'ai du mal a comprendre ton code, c'est assez fouilli.

Mais quand tu fais un unset() d'une variable de session, celle ci disparait définitivement de la session, et donc pour la page d'après elle ne reviendra pas ce qui est normal.

Maintenant d'après ce que j'ai compris, tu veux effacer le contenu de $_SESSION si ($_SESSION['ProductId'] != ProductId). Donc tout simplement :
Code :
1
2
3
4
if ($_SESSION['ProductId'] != ProductId)
{
   unset($_SESSION);
}
Si jamais ca efface toujours pas le contenu (je ne suis pas sur qu'un unset de la globale efface le contenu dans le cadre des sessions), comme tu avais fait :
Code :
1
2
3
4
5
if ($_SESSION['ProductId'] != ProductId)
{
   foreach ($_SESSION AS $key => $value)
      unset($_SESSION[$key]);
}
__________________
Testez le forum Fire Soft Board, un forum libre, gratuit et français.

Système de template de phpBB - Lisez la FAQ PHP avant toute question si vous débuttez en PHP.
genova est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h06.


 
 
 
 
Partenaires

Hébergement Web