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 $_SESSION change seul


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Par défaut variable $_SESSION change seul
    Bonjour à tous,
    Mon site en local sur easyphp fonctionnait sans soucis, depuis que je l'ai uplaoder sur mon hébergeur ( NUXIT ) je rencontre des pbs de sessions assez étrange et "aléatoire"

    Tout d'abord j'ai remarqué que par exemple mes variables SESSION prenais des valeurs provenant d'un $_GET ou $_POST ou de la BDD sans que je leur demande, simplement car le nom été le même
    exemple
    // pseudo de l'auteur
    $pseudo=$data['pseudo'];
    ..
    ..
    //pseudo de l'utilisateur connecté sous son profile
    echo bienvenue $_SESSION['pseudo'] // ici ca m'affiche le pseudo de l'auteur...

    Autre exemple, je me log sous mon compte,
    je met en session certaine valeur relative au USER

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if ($loginOK) 
    {
      $_SESSION['connect'] = "on";
      $_SESSION['id'] = $data['id_mb'];
      $_SESSION['id_membre'] = $data['id_mb'];
      $_SESSION['pseudo'] = $data['pseudo'];
      $_SESSION['age'] = $data['age'];
      $_SESSION['sexe'] = $data['sexe'];
      $_SESSION['_sexe_'] = $data['sexe'];
      $_SESSION['ville'] = $data['ville'];
      $_SESSION['rang'] = $data['rang'];
    }
    comme vos pouvez le voir j'ai doublé les variable id_mb et sexe car j'avais des soucis il gardait pas la valeur dans le $_SESSION mais prenais la valeur provenant d'ailleur dans le code.

    maintenant mon soucis, je me log, sous mon pseudo
    ca marque
    "bienvenue rockt "
    Toutes mes variables SESSION semble OK, puis je change de page et ca devient
    "bienvenue skl" ( skl étant un autre membre )
    Donc le $_SESSION['pseudo']=rockt est devenu $_SESSION['pseudo']=skl
    sans que je demande rien étrange....

    En local tout fonctionnait niquel..
    sur le FTP de NUXIT mon hébergeur à la racine il y à :
    /session/
    /www/

    Mon site est dans /www/ , quand je supprime l'intégralité du contenu de /session/ et que je me log, le bug n'apparait plus... car j'imagine que j'ai supprimé la session de skl...mais bon ça me pose quand même problème car je vais pas m'amuser a le vider toutes les 5 minutes, quand les membres seront connectés...et ça risque de mélanger toutes les sessions :s
    Avez vous une petite idée ?

    Merci d'avance car là je vois pas du tout

  2. #2
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 44
    Par défaut
    salut

    je pense qu'il serait plus judicieux de définir un tableau dans une variables de session du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $_SESSION['USER'] = array();
     
    $_SESSION['USER']['connect'] = "on";
      $_SESSION['USER']['id'] = $data['id_mb'];
      $_SESSION['USER']['id_membre'] = $data['id_mb'];
      $_SESSION['USER']['pseudo'] = $data['pseudo'];
      $_SESSION['USER']['age'] = $data['age'];
      $_SESSION['USER']['sexe'] = $data['sexe'];
      $_SESSION['USER']['_sexe_'] = $data['sexe'];
      $_SESSION['USER']['ville'] = $data['ville'];
      $_SESSION['USER']['rang'] = $data['rang'];
    le rep session sert a stocké les cookies de session (je suppose).
    fais tu un control a chaque page de la session de l'utilisateur.
    est ce que ton id de session change a chaque page.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Par défaut
    Bonsoir backdown,

    Je fais ceci en général
    si connect =="on" alors c'est que c'est une utilisateur authentifié
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    session_start();
    if(@$_SESSION['connect'] == "on" )
    {
    }

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Par défaut
    A peine authentifié sous mon compte j'ai ceci:



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array(9) { ["connect"]=>  &string(2) "on" ["id"]=>  &string(1) "3" ["id_membre"]=>  &string(1) "3" ["pseudo"]=>  &string(3) "jey" ["age"]=>  &string(2) "24" ["sexe"]=>  &string(1) "M" ["_sexe_"]=>  &string(1) "M" ["ville"]=>  &string(0) "" ["rang"]=>  &string(1) "3" }

    Puis des que je vais sur la page accueil ou une autre page j'ai cela :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array(9) { ["connect"]=>  &string(2) "on" ["id"]=>  &string(1) "3" ["id_membre"]=>  &string(1) "3" ["pseudo"]=>  &string(5) "skl13" ["age"]=>  &string(2) "24" ["sexe"]=>  &string(1) "M" ["_sexe_"]=>  &string(1) "M" ["ville"]=>  &string(0) "" ["rang"]=>  &string(1) "3" }
    Sachant que l'utilisateur skl13, n'est ni en ligne , ni au rang 3 et son id_membre n'est pas le bon, en gros toutes les infos correspondent bien à ma session, sauf le pseudo qui change...


    ps: si je vais directement sur les menu de mon site le pseudo change pas .
    Si par contre je passe par la page ADMIN , puis ensuite je vais sur une autre page, là oui il change et passe de jey à skl13
    J'en déduis que mon bug provient de la page admin..




    Dans ma page admin je liste les 10 derniers commentaires avec kke chose du genre

    while ($data=mysql_fetch_assoc($req))
    {
    $pseudo=nl2br(htmlspecialchars(stripslashes($data['pseudo'])));
    echo $pseudo....
    }

    Comme par hasard le pseudo du dernier commentaire est : skl13
    ... j'en déduit que mon site fait l'amalgame entre la variable $pseudo et la variable $_SESSION['pseudo']... je ne comprend pas pourquoi.
    J'ai donc changé par :
    while ($data=mysql_fetch_assoc($req))
    {
    $pseudo_commentaire=nl2br(htmlspecialchars(stripslashes($data['pseudo'])));
    echo $pseudo_commentaire....
    }
    Et là, ça fonctionne....mais j'aimerai bien comprendre pourquoi, la variable $_SESSION['pseudo'] change de valeur seule ?
    Pourquoi en faites il affecte $_SESSION['pseudo']=$pseudo alors que je n'ai rien demandé, et surtout ces variables n'ont rien à voir

  5. #5
    Membre émérite Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Par défaut
    Citation Envoyé par rockt13 Voir le message
    while ($data=mysql_fetch_assoc($req))
    {
    $pseudo=nl2br(htmlspecialchars(stripslashes($data['pseudo'])));
    echo $pseudo....
    }
    Salut

    C'est cette ligne de code qui m'interpelle et qui pourrait être à la source de ton souci.
    Je n'ai pas la source compléte de ton script, mais je suppose que tu mets en session les variables issues de cette requête.(?)
    Si c'est le cas, ta boucle while te retourne forcemment plusieurs variables [$pseudo] différentes, et celà peut créer effectivement un conflit.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Par défaut
    Bonjour,

    Non je ne met pas en session les variables issues de ce WHILE.
    En fait ce while sert uniquement à afficher les commentaires.
    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
    32
    33
    34
    35
     
    <?PHP
     
    $sql = 'SELECT * FROM commentaire order by timestamp DESC LIMIT 10';
    // on envoie la requête 
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
     
     
     
     
    ?>
    <h2>Liste des 10 derniers commentaires</h2>
    <table>
    <tr>
    <th class="com">Auteur</th><th class="com">Date</th><th style="width:500px;">Message</th><th class="com">IP</th><th class="com">Voir</th><th class="com">Delete</th>
    </tr>
    <?PHP
    $color=0;
    while($data=mysql_fetch_assoc($req))
    {
    $pseudo_commentaire=nl2br(htmlspecialchars(stripslashes($data['pseudo'])));
    if($color==0){ $color2 = "#000000"; $color = 1; }else { $color2 = "#8e5f47"; $color = 0; }
    	echo '<tr style="background-color:'.$color2.';">';
    	echo '<td >'.$pseudo_commentaire.'</td><td>'.date('d/m/y  H:i', $data['timestamp']).'</td><td>'. nl2br(htmlspecialchars(stripslashes($data['message']))).'</td><td>'. $data['ip_com'].'</td>';
    	echo '<td><a class="image" href="index.php?id_img='.$data['id_photo'].'&amp;p=watch#'.urlencode($data['id_com']).'">	<img style="border:none;"src="./img/ico/loupe-icon.png" alt="Voir le commentaire"/></a></td>';
    	echo '<td style="text-align:center;"><img src="./img/ico/delete-icon.png" /></td>';
    	echo '</tr>';
    }
    }
    else
    {
    	header('Location:index.php');
     
    }
    ?>
    Voila on voit que j'ai remplacé $pseudo par $pseudo_commentaire.
    Donc quand j'arrive sur cette page je suis forcemment logé, et forcement $_SESSION['pseudo']=jey , mais des que j'arrivais sur cette page, quand il y avais encore $pseudo=... , et bien $_SESSION['pseudo'] prenais la valeur du dernier $pseudo de ma boucle while.
    Etrange quand meme non ? Simplement parceque le nom est le même pourtant les variables non rien à voir...

Discussions similaires

  1. Variable qui change de valeur "toute seule"
    Par GDMINFO dans le forum C++
    Réponses: 9
    Dernier message: 14/10/2010, 18h12
  2. Variable qui change de valeur toute seul :(
    Par lcfseth dans le forum C
    Réponses: 12
    Dernier message: 22/12/2007, 12h25
  3. [Sécurité] variable $_session dans du javascript
    Par sam01 dans le forum Langage
    Réponses: 2
    Dernier message: 09/04/2006, 19h38
  4. Changer une variable $_SESSION -> Formulaire
    Par Nadd dans le forum Langage
    Réponses: 2
    Dernier message: 05/02/2006, 23h37
  5. Variable qui change après un DispatchMessage
    Par SekYo dans le forum Windows
    Réponses: 9
    Dernier message: 30/09/2004, 16h22

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