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 :

Comportement étrange de session


Sujet :

Langage PHP

  1. #1
    Membre averti
    Inscrit en
    Juin 2011
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 258
    Points : 334
    Points
    334
    Par défaut Comportement étrange de session
    Bonjour,

    J'ai un souci avec des sessions PHP dans mon projet de site personnel.

    Dans l'index.php, dans le cadre de tests et afin de toujours avoir une version "vierge" de la page lors de son rechargement, je teste si une session existe et la détruit, puis en créé une nouvelle, comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if(session_status()==PHP_SESSION_ACTIVE) {
        session_destroy();
    }
    puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if(session_status()==PHP_SESSION_NONE) {
        session_start();
    }
    Lors de ma première utilisation de la page, je connecte un utilisateur et stocke son pseudo dans $_SESSION['utilisateur']. Lorsque je recharge la page, par contre, l'utilisateur est toujours connu.

    J'exécute ce code, pour voir ce qui en sort:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    echo session_status();
    if(session_status()==PHP_SESSION_ACTIVE) {
        session_destroy();
    }
     
     
    if(session_status()==PHP_SESSION_NONE) {
        session_start();
    }
    echo $_SESSION['utilisateur']->getPseudo();
    -> Le session_status me renvoie 1, soit PHP_SESSION_NONE (il n'y a donc pas de session ouverte au rechargement de la page
    -> $_SESSION['utilisateur']->getPseudo(); me renvoie le bon pseudo

    Donc je dois mal m'y prendre.

    La seule solution viable semble être de tester si aucune session n'est ouverte, la créer puis la détruire et ensuite en recréer une, qui sera vierge. J'ai bon?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if(session_status()==PHP_SESSION_NONE) {
        session_start();
        session_destroy();
        session_start();
    }
    Merci pour vos réponses.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    La réponse est dans la question : ton session_status() vaut PHP_SESSION_NONE (normal tu n'as pas encore démarré la session) donc tu ne vas pas dans le premier IF mais dans le deuxième.

    De toute façon session_destroy() ne détruit pas $_SESSION.

    Puisque ton but est de réinitialiser la session, tu n'as pas besoin de t'embarasser de tests :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    session_start();
    session_regenerate_id();
    $_SESSION = array();
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Inscrit en
    Juin 2011
    Messages
    258
    Détails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 258
    Points : 334
    Points
    334
    Par défaut
    J'étais persuadé que détruire une session détruisait les variables y étant attachées. :o Merci pour l'information, c'est bon à savoir.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    session_regenerate_id();
    revient à faire un destroy puis start? Je ne connaissais pas la méthode.

    Merci beaucoup, je vais corriger tout ça.

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

Discussions similaires

  1. [Sécurité] Comportement étrange de sessions
    Par rpgmax dans le forum Langage
    Réponses: 3
    Dernier message: 02/02/2008, 17h24
  2. Comportement étrange apres une désinstallation
    Par Sunchaser dans le forum Excel
    Réponses: 4
    Dernier message: 06/08/2005, 19h44
  3. comportement étrange d'une jointure ...
    Par amenis dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 10/02/2005, 21h27
  4. [Système][Runtime][Exec] Comportement étrange au lancement de BeSweet
    Par divxdede dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 06/06/2004, 09h54
  5. Réponses: 2
    Dernier message: 22/09/2003, 11h23

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