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 :

Une variable de session disparait en cours de route. Mais où est-elle ?


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut Une variable de session disparait en cours de route. Mais où est-elle ?
    Bonjour,

    Je viens de me rendre compte d'un problème extra-ordinaire :
    A l'identification du membre, je récupère son pseudo depuis ses informations de connexion (mail et passe), au moyen d'une requête sql.
    Je passe donc le pseudo en session, comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $affiche="SELECT pseudo FROM membre WHERE email='".$email."' AND motDePasse='".$passe."' AND valide='1'  ";
    $resultat = mysql_query("$affiche");
    while (
    $R = mysql_fetch_array($resultat)) 
    {
    $_SESSION['pseudo']=$R[pseudo];
    ;}
    mysql_free_result($resultat);
    Juste en dessous dans le script, j'ai une ligne qui affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo "Bienvenue $_SESSION[pseudo]";
    Jusque là tout va bien.

    Mais si je quitte la page et que j'y reviens, la variable $_SESSION['pseudo'] a disparu.
    Pourtant après avoir créer cette variable, j'en crée d'autres et elles elles sont toujours disponible dans le reste du site, y compris dans la page en question.

    Comment cela ce puisse-t'il être ?

    ça c'est le script complet (épuré quand même), si vous êtes patient :

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    if(!isset($_SESSION['pseudo']))
    {
    
    <?php //on va aller chercher dans la table le pseudo pour les placer en session et l'urlSite pour l'insérer directement dans la table commentaire ou réponse $affiche="SELECT id, pseudo FROM membre WHERE email='".$email."' AND motDePasse='".$passe."' "; $resultat = mysql_query("$affiche"); while ( $R = mysql_fetch_array($resultat)) { $_SESSION['pseudo']=$R[pseudo]; //id sert à savoir où updater le numéro de membre provisoirement créé ci-dessous, pour le temps de la session ($numeroConnexion) $id=$R[id] ;} mysql_free_result($resultat); //ici ce sont des variables qui font offices d'id de session : elles sont bien transmises partout. $_SESSION['numeroConnexion']=$numeroConnexion; $_SESSION['numeroConnexionVariable']=$numeroConnexionVariable; ;}//ferme if(!isset($_SESSION[id]) echo "Bienvenue $_SESSION[pseudo]"; ?>
    Colorez votre code PHP sur les forums grâce à Developpez.com?>

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    Juste après le script, je fais ça, pour vérifier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    echo $_SESSION['numeroConnexion'];
    echo"<br>";
    echo $_SESSION['numeroConnexionVariable'];
    echo'<br>';
    echo $_SESSION['pseudo'];
    Je quitte la page, j'y reviens, et les deux premières variables s'affichent, mais la troisième a disparu

  3. #3
    Membre confirmé Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Points : 625
    Points
    625
    Par défaut
    je crois que tu récupère mal la valeur du pseudo dans la base de données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['pseudo']=$R[pseudo];
    devrait-être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['pseudo']=$R['pseudo'];

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    Salut Dj-julio

    Je ne crois pas que ça vienne de là, sans quoi le nom de la variable ne s'afficherait même pas lors du echo "bienvenue $_SESSION[pseudo]".

    J'ai pensé à cela :
    Quand je change de page, j'arrive sur une page de définition. Cette page génère une requête sql.
    Un des champs généré s'appelle justement pseudo et je fais alors, dans la boucle while:
    $pseudo=$R[pseudo];

    Ce pourrait-il que la création de cette variable annule la valeur de la variable de session $_SESSION['pseudo'] ?
    (manque de pot à cet instant je ne peux pas tester, l'hébergement qui me sert à faire mes tests en ligne semble refuser les connexions ftp )

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    Bon bah voilà c'était ça,

    J'avais une page qui récupérait des messages.
    Chaque message comporte un pseudo récupéré ainsi dans la boucle while de la requete :
    $pseudo=$ResultatRequete[pseudo]

    Du même coup la variable de session $_SESSION['pseudo'] voyait sa valeur modifié.

    Comment cela se fait ? Je pensais qu'une variable de session était différent d'une variable normal, en fait c'est la meme chose mais mise en session, ç'est ça ?

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

Discussions similaires

  1. Une variable qui se vide en cours de route
    Par karpediem dans le forum Flash
    Réponses: 1
    Dernier message: 09/01/2009, 22h03
  2. Réponses: 4
    Dernier message: 14/12/2005, 08h33
  3. [C#] ArrayList dans une variable de session ?
    Par Oberown dans le forum ASP.NET
    Réponses: 1
    Dernier message: 12/12/2005, 15h50
  4. [C#] Tester existence d'une variable de session
    Par IDNoires dans le forum ASP.NET
    Réponses: 2
    Dernier message: 31/12/2004, 12h30
  5. Création d'une variable de session avec un ID
    Par PrinceMaster77 dans le forum ASP
    Réponses: 4
    Dernier message: 18/10/2004, 10h28

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