IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Détruire variable session (pas session entière)


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    Par défaut Détruire variable session (pas session entière)
    Bonjour,

    Mes sessions liées aux paniers de mon site e-commerce se présentent comme suit :
    $_SESSION[article'numero'] = quantité
    J'utilise cette fonction pour détruire toutes les variables session dont le nom commence par "article" avec la fonction unset() mais les variables sont toujours là après l'opération!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    foreach ($_SESSION as $cle=>$valeur) {
    	if (substr_count($cle, "article") > 0) {
    		echo 'Destruction variable $_SESSION[\'' . $cle . '\']<br>';
    		unset($_SESSION['$cle']);
    	}
    }
    ?>
    Le résultat affiché est par exemple :
    Destruction variable $_SESSION['article50']
    Destruction variable $_SESSION['article292']
    Destruction variable $_SESSION['article129']
    Donc j'entre bien dans la boucle et les variables sont correctes. Aurais-je fait une erreur quelque part?

    webrider
    Dernière modification par webrider ; 26/03/2007 à 22h12.

  2. #2
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    Je pense bien voir une erreur : c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unset($_SESSION[$cle]);
    qu'il faut écrire et pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unset($_SESSION['$cle']);
    .
    Inutile de mettre des quotes dans les indexes de tableaux si ce sont des variables.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci pour ta réponse guidav mais ça ne change rien, les articles sont toujours là au grand complet...

  4. #4
    Invité
    Invité(e)
    Par défaut
    J'ai trouvé qqch d'intéressant dans le manuel PHP :
    Si une variable globale est détruite avec unset() depuis une fonction, seule la variable locale sera détruite. Le variable globale gardera la valeur acquise avant l'appel à unset().
    Si je fais un echo de la variable directement après le unset(), rien n'est affiché => elle est détruite... en local.

    Il me faut monter d'un niveau et la détruire au niveau global mais je sèche! Quelqu'un pour m'aider?

    Merci!!

    EDIT : j'ai aussi essayé ça mais sans succès
    Dernière modification par webrider ; 26/03/2007 à 18h32.

  5. #5
    Membre actif Avatar de bigltnt
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Points : 205
    Points
    205
    Par défaut
    C'est une solution un peu crado mais si tu ne te sers pas de isset(), tu peux implémenter la valeur des variables que tu veux détruire à "NULL".

    Ouais je sais c'est vraiment très moche, j'ai presque honte

    Mais si tu trouves pas .....

    ++

  6. #6
    Invité
    Invité(e)
    Par défaut
    Salut!

    En dernier recours ce pourrait être une solution pour fixer la valeur de la variable à null mais cela n'arrangera pas mon problème.

    Comme je l'ai précisé plus haut, je ne veux pas seulement détruire le contenu de la variable mais la variable elle-même. Cela fait une grande différence dans le cas qui m'intéresse.
    Si je ne détruis que le contenu, l'article sera toujours là dans le panier avec une quantité null. Si je détruis la variable elle-même, l'article ne sera plus là du tout et mon problème sera réglé.

    Je ne sais pas pourquoi j'ai tant de problèmes avec mes sessions, serait-ce dû à une mauvaise compilation de mon module php? Je ne parviens pas à faire de tableau dans mes sessions ni à détruire une variable donnée. PHP permet quand-même bien de le faire ou je me trompe ?!

  7. #7
    Candidat au Club
    Inscrit en
    Mars 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Ma question est peut-être idiote, mais fais-tu bien un session_start() avant de faire référence à $_SESSION ? Si oui, ton session_start est-il bien placé au début de ton code ?

    Sinon, ça serait pas mal si tu pouvais mettre des extraits de ton code (en particulier : fonction création de la session, fonction d'initialisation de tes variables de session, fonction (complète) de destruction de tes variables de session, etc.). Pour ma part, je n'ai jamais rencontré de problème avec unset sur les variables de session, donc je me dis que ton problème doit être ailleurs.

    Alh

  8. #8
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    Autre suggestion, mais nettement plus difficile à mettre en oeuvre : définir ton panier sous forme de classe, avec une fonction ajout et une fonction retrait.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Merci pour vos réponses,

    Alors je vous le dis tout de suite, je suis parvenu à régler mon problème.

    Au départ je n'utilisais pas session_start() parce que j'avais imposé session.autostart=1 dans mon php.ini. Ce fut une grande erreur car passer de autostart=1 à 0 a tout arrangé (avec les session_start() bien entendu).

    guidav, j'utilise ce procédé pour mon panier, difficile à mettre en oeuvre mais super pratique par la suite->une instanciation->une méthode->et hop le panier est mis à jour!

    J'ai apprécié votre aide à tous et petit conseil : n'utilisez jamais session.autostart=1! LOL

    Bonne soirée,

    webrider

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. variables de session pas bonne
    Par *alexandre* dans le forum JSF
    Réponses: 2
    Dernier message: 04/02/2009, 21h07
  2. Détruire variable de session
    Par julien1451 dans le forum Langage
    Réponses: 3
    Dernier message: 23/01/2009, 17h34
  3. Pas le droit de détruire les fichiers de sessions.
    Par sliderman dans le forum Langage
    Réponses: 3
    Dernier message: 10/07/2008, 20h30
  4. Variable de session pas trouvée
    Par Alexandrebox dans le forum Langage
    Réponses: 4
    Dernier message: 13/03/2007, 16h56
  5. Détruire les variables d'une session
    Par kespy13 dans le forum Langage
    Réponses: 6
    Dernier message: 05/05/2006, 17h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo