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 :

Modifier $_SESSION dans une fonction


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Par défaut Modifier $_SESSION dans une fonction
    Bonjour,

    J'ai un problème de persistance de mes variables de session.
    Voici mon code :

    sessions.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
     
    function test() {
       global $_SESSION;
       $_SESSION['ouverte'] = true;
    }
     
    ?>
    index.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    include('sessions.php');
     
    session_start();
    test();
    if( isset($_SESSION['ouverte']) )
       print("Session ouverte.");
     
    ?>
    Lorsque je lance mon index.php, ça me marque bien "Session ouverte.".
    Cependant si je commente la ligne "test();" et que recharge la page, la session est réinitialisé.

    En revanche si je remplace la ligne:
    test();
    Par :
    $_SESSION['ouverte'] = true;
    Directement dans index.php le fonctionnement de la session est bon, au rechargement la variable de session est bien conservée bien que la ligne soit commentée.

    Pourquoi ma fonction test() ne modifie-t-elle pas correctement la session courante ?

    Merci de votre aide.

  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
    Par défaut
    $_SESSION est super-globale, tu peux enlever
    Je ne vois pas pourquoi ca perturberait mais tu peux essayer.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Par défaut
    Cela n'y fait rien, tant que le tableau est modifié dans la fonction les variables de sessions ne sont gardés que sur la page en cours et disparaissent lors du rafraichissement.

  4. #4
    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
    Par défaut
    A mon avis le problème n'a pas de rapport avec le contenu du code : ta session ne doit simplement pas fonctionner (pas d'écriture dans le repertoire session, cookie desactivé etc.)
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Par défaut
    Je suis assuré du bon fonctionnement des sessions car si je remplace la ligne:
    test();
    Par :
    $_SESSION['ouverte'] = true;
    Dans index.php le comportement des sessions est tout à fait correct.

    C'est juste le fait de mettre la ligne :
    $_SESSION['ouverte'] = true;
    Dans une fonction qui occasionne le dysfonctionnement...

    Des autres idées ?

  6. #6
    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
    Par défaut
    Quand tu donnes la valeur dans ton code, que ce soit dans la fonction ou directement, ca fonctionne ; quand tu l'enleves ca ne fonctionne pas ; donc rien n'est réellement écris dans la session.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. Modifier tableau dans une fonction
    Par gbsatti dans le forum Débuter
    Réponses: 1
    Dernier message: 03/12/2011, 12h56
  2. Modifier le contenu de pointeurs dans une fonction
    Par Sol_Invictus dans le forum Débuter
    Réponses: 6
    Dernier message: 12/09/2008, 00h30
  3. Modifier un Label dans une fonction Shared
    Par twixi dans le forum Windows Forms
    Réponses: 5
    Dernier message: 25/06/2008, 12h26
  4. Réponses: 1
    Dernier message: 28/12/2006, 18h02
  5. Réponses: 4
    Dernier message: 18/01/2006, 12h21

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