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 :

Variable de session qui ne se modifie pas ou cache de session ?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 167
    Par défaut Variable de session qui ne se modifie pas ou cache de session ?
    Bonjour,

    j'ai un comportement bizarre lors de l'utilisation d'une session dans laquelle je place un tableau de valeur... Je m'explique :

    Ma page appelé effectue le code suivant : (je passe les parties ininteressantes)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    session_start();
     
    // Supprime la variable de session tab_erreur si elle existe
    if(isset($_SESSION["tab_erreur"])) { unset($_SESSION["tab_erreur"]); }
     
    [...]
     
    $tab_erreur = array();
    $tab_erreur["type"] = "SERVEUR_INEXISTANT_CMDB";
    $tab_erreur["message"] = "Le serveur ".$str_serveur." n'existe plus en cmdb. Vous ne pouvez donc plus faire de demandes de supervision sur celui-ci.";
    $tab_erreur["url_retour"] = VERS_ACCUEIL;
    $_SESSION["tab_erreur"] = $tab_erreur;
     
    //echo print_r($_SESSION);die;
     
    // rediriger vers erreur.php
    header('Location: ' . VERS_ERREUR);
    Si je décommente le print_r($_SESSION); les valeurs sont les bonnes.

    Ma page erreur.php qui est appelée est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    session_start();
     
    // Récupération des variables de session
    $tab_erreur = $_SESSION["tab_erreur"];
    $str_type_erreur = $tab_erreur["type"];
    $str_message_erreur = $tab_erreur["message"];
    $str_url_retour = $tab_erreur["url_retour"];
     
    echo print_r($_SESSION);die;
    Et là, l'execution de ce print_r($_SESSION); ne me retourne pas les bonnes valeurs pour le tableau tab_erreur.
    Il me retourne d'autres valeurs que j'ai du avoir lors d'une erreur précédente lors de tests sur d'autres parties de mon application.

    Quelqu'un voit-il d'où vient le problème ?!

    Merci d'avance.
    Bizoo

  2. #2
    Membre confirmé Avatar de hmimoud
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 135
    Par défaut
    Quand tu decommente
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //echo print_r($_SESSION);die;
    dans la premiere page ca marche ou pas?

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 167
    Par défaut
    Citation Envoyé par Bizoo Voir le message
    Si je décommente le print_r($_SESSION); les valeurs sont les bonnes.
    Donc oui si je regarde ce qu'il y a en session juste après y avoir placé mes nouvelles valeurs, tout est OK !

  4. #4
    Membre confirmé Avatar de hmimoud
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 135
    Par défaut
    Est ce que les valeurs qui sont bonnes s'affichent sur la premiere ou deuxieme page, essaye d'etre plus clair

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 167
    Par défaut
    Tout est dans le premier post :

    1er écran : code => variables session OK
    appelle du deuxième écran
    2ème écran : code => variables session KO

    Je vois pas comment être plus clair que dans mon premier post, désolé ...

  6. #6
    Membre confirmé Avatar de hmimoud
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 135
    Par défaut
    La tu as ete plus clair.

    Quand tu met sur le premier ecran
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $_SESSION["tab_erreur"] = $tab_erreur;
     
    echo print_r($_SESSION);die;
    ,tu affecte le tableau à la session, c'est normal que ca s'affiche!
    Mais dans le 2eme, tu fais le contraire, c'est la session que tu affectes au tableau.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    session_start();
     
    $tab_erreur = $_SESSION["tab_erreur"];
     echo print_r($_SESSION);die;
    Donc tu as 2 solutions :
    1ere: afficher directement la session avec comme parametre le tableau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    session_start();
    echo print_r($_SESSION["tab_erreur"]);die;
    2eme: affecter ta session a un tableau puis l'afficher :

    session_start();

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $tab_erreur = $_SESSION["tab_erreur"];
    echo print_r($tab_erreur//affichage du tableau);
    die;
    Bonne Chance !

  7. #7
    Membre éprouvé Avatar de Pierrot2Mars
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2010
    Messages : 79
    Par défaut
    Justement, je ne trouve pas ton 1er post très clair.
    Ton premier script supprime et créé la SESSION.
    Puis la redirection enchaine sur ton deuxième script qui effectue son affichage.

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 167
    Par défaut
    hmimoud, je ne vois pas en quoi tes 2 propositions entre dans un autre cas de test que ce que je fais moi.

    Pour expliquer avec un exemple concret :

    - j'arrive sur ma page 1
    - session_start()
    A ce moment là, $_SESSION["tab_erreur"] == tableauX (qui correspond à une précédente erreur)
    - j'unset $_SESSION["tab_erreur"] pour supprimer toutes trâce d'une précédente erreur
    - [...code...]
    - une erreur survient, j'initialise un tableauY dans ma page avec les codes de l'erreur qui vient de se produire
    - j'affecte à $_SESSION["tab_erreur"] le nouveau tableauY ($_SESSION["tab_erreur"] = tableauY)
    A ce moment là, $_SESSION["tab_erreur"] == tableauY
    Ce que je vérifie bien avec le print_r($_SESSION["tab_erreur"]) qui m'affiche bien tableauY
    - j'appelle ma page 2 qui est ma page d'erreur

    - j'arrive sur ma page 2
    - session_start()
    - je récupère ma variable $_SESSION["tab_erreur"]
    Normalement, vous êtes d'accord avec moi qu'il devrait tjrs y avoir tableauY dans cette variable ?!
    Et ben lorsque je fait un print_r($_SESSION["tab_erreur"]) ce n'est pas tableauY mais tableauX qui s'affiche !!!....

    Et je comprends vraiment pas ...




    PAGE 1 :
    suppression variable de session V1
    initialisation variable locale V2
    mise en session de la variable locale V2 dans la variable de session V1
    appelle PAGE 2
    PAGE 2 :
    affichage de la variable de session V1 => Pas la bonne

    je suis hors de moi de rencontrer un problème sur un mécanisme comme celui-ci ......

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

Discussions similaires

  1. Variable d'une boucle qui ne se modifie pas
    Par Erast dans le forum Débuter
    Réponses: 4
    Dernier message: 17/04/2010, 20h25
  2. Réponses: 2
    Dernier message: 27/05/2008, 09h30
  3. Variable de session qui ne se met pas a jour
    Par tekman54000 dans le forum Langage
    Réponses: 2
    Dernier message: 12/04/2008, 17h19
  4. Réponses: 4
    Dernier message: 08/03/2007, 21h00
  5. Réponses: 6
    Dernier message: 04/09/2006, 15h48

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