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 :

Autre problème de variable de session


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 3
    Par défaut Autre problème de variable de session
    Bonjour !

    Étant plus ou moins débutant dans le domaine, j'ai quelques soucis au niveau d'un chat que j'essaye de réaliser de a à z depuis un certain temps, et pour tout dire je suis assez mal barré pour le moment xD !

    Le problème est le suivant, j'ai un champ de texte dans un formulaire qui doit garder en mémoire le pseudo fournit par l'utilisateur dans ce champ lorsqu'il a envoyé le formulaire.

    Par défaut celui ci contient 'Inconnu', je l'ai enregistré dans une variable $_SESSION['pseudo'] qui se trouve dans le paramètre value="" du formulaire ; Lorsque ce dernier sera traité, $_SESSION['pseudo'] contiendra alors $_POST['pseudo'] pour pouvoir mettre à jour le pseudo de l'utilisateur dans le champ de texte.

    Cependant, comme la page d'index se charge à nouveau pour rafraichir les messages, $_SESSION['pseudo'] redevient alors 'Inconnu'. J'ai l'impression que PHP me créer deux variables de session T_T Si quelqu'un pouvait m'éclaircir, m'apporter une solution ou quelques conseils, j’apprécierais énormément !

    Merci d'avance !

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Le mieux est de nous fournir le code

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 3
    Par défaut
    Très bien voici le code, je l'ai simplifié et retiré le contenu entre <head> </head> pour gagner de la place ;3.

    chat.php :
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
     
    <?php
    session_start();
    $_SESSION['pseudo'] = "Inconnu";
     
    try {
      $bdd = new PDO('mysql:host=localhost;dbname=db_mastersite', 'root', '');
    }
     
    catch (Exception $e) {
      die('Erreur : ' . $e->getMessage());
    }
     
      $reponse = $bdd->query('SELECT logged from ms_chat_usrlst WHERE IP = "' . $_SERVER['REMOTE_ADDR'] . '" ');
      $online = $reponse->fetch();
     
        /* Son pseudo est par défaut 'Inconnu' et on l'affiche comme connecté à droite. */
    	if (!$online) {
        $req = $bdd->prepare('INSERT INTO ms_chat_usrlst(usrname, IP, logged) VALUES(?, ?, ?)');
        $req->execute(array($_SESSION['pseudo'], $_SERVER['REMOTE_ADDR'], 1));
    	}
    	else {
    	}
     
    ?>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    </head>
    <body>
    <div id="enveloppe">
     
        <div class="chat_menu">
    	  <div class="msg_infomain">
    	    <tr>
    	      <td>
    	      <a href="profile.php"></a>
    	      </td>
    	      <td>
    	      <span></span>
    	      </td>
    	    </tr>
    	  </div>
    	  <p><a href="chat_functions.php?mode=logout">deconnexion</a></p>
    	  <div class="msg_infomain_bottom bottom_radius">
    	    <tr>
    		</tr>
    	  </div>
    	</div>
     
    <div class="left">	
    <?php
    // Messages ==>
      $msg = $bdd->query('SELECT usrname, date_creation, message FROM ms_chat_messages ORDER BY ID DESC LIMIT 0, 16') or die(print_r($bdd->errorInfo()));
      while ($donnees = $msg->fetch()) { ?>
        <div class="chat_msg">
    	  <div class="msg_info">
    	    <tr>
    	      <td>
    	      <a href="profile.php"><?php echo htmlspecialchars($donnees['usrname']); ?> :</a>
    	      </td>
    	      <td>
    	      <span><?php echo htmlspecialchars($donnees['date_creation']); ?></span>
    	      </td>
    	    </tr>
    	  </div>
    	  <p><span style="font-family: Verdana;"><?php echo htmlspecialchars($donnees['message']); ?></span></p>
    	  <div class="msg_bottom">
    	    <tr>
    		</tr>
    	  </div>
    	</div>
      <?php
      }
      $msg->closeCursor();
    ?>
    </div>
     
    <div class="right">
    <?php
    /* Liste des utilisateurs. */
    $usrlst = $bdd->query('SELECT usrname FROM ms_chat_usrlst WHERE logged = 1') or die(print_r($bdd->errorInfo()));  
      while ($donnees = $usrlst->fetch()) { ?>
    	  <div id="usrdta"><p><acronym title="<?php echo $_SERVER['REMOTE_ADDR']; // TEST ?>"><?php echo htmlspecialchars($donnees['usrname']); ?></acronym></p></div>
      <?php
      }
      $usrlst->closeCursor();
    ?>
    </div>
     
    <div class="send_form">
      <center>
      <form class="chat_form" method="post" action="chat_post.php">
        <input type="text" style="width: 100px;" name="pseudo" value="<?php echo $_SESSION['pseudo'] ?>" placeHolder="Pseudo"/>
        <input type="text" style="width: 342px;" name="message" placeHolder="Veuillez raconter votre vie."/>
        <input type="submit" class="chat_submit" value="Envoyer" onclick="document.send_form.chat_form.chat_submit.disabled=true; document.chat_form.submit();"/>
        <input type="submit" class="chat_refresh" value="Actualiser"/>
      </form>
      </center>
    </div>
     
    </div>
    </body>
    </html>
    chat_post.php :
    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
    36
     
    <?php
    try {
      $bdd = new PDO('mysql:host=localhost;dbname=db_mastersite', 'root', '');
    }
    catch (Exception $e) {
      die('Erreur : ' . $e->getMessage());
    }
     
    if ( ($_POST['pseudo'] == "") AND ($_POST['message'] == "") ) {
      echo 'Les champs ne peuvent être vide.' ;
      header('Location: chat.php'); // Retour à la page.
        }
     
    else if ( ($_POST['pseudo'] == "") AND ($_POST['message'] != "") ) {
      // Pas de pseudo définit, on prend celui par défaut : 'Inconnu'.
      $req = $bdd->prepare('INSERT INTO ms_chat_messages(usrname, message, date_creation) VALUES(?, ?, NOW())');
      $req->execute(array($_SESSION['pseudo'], $_POST['message']));
      header('Location: chat.php');
        }
     
    else if ( ($_POST['pseudo'] > 12) OR ($_POST['message'] > 511) ) {
        echo 'Pseudo invalide ou message trop volumineux !';
    	}
     
    else {
        // Si le pseudo a été fourni, nous mettons à jour celui-ci dans la base de données.
    	$_SESSION['pseudo'] = $_POST['pseudo'];
        $update = $bdd->prepare('UPDATE ms_chat_usrlst SET usrname = :pseudo WHERE IP = "' . $_SERVER['REMOTE_ADDR'] . '" AND logged = 1');
        $update->execute(array('pseudo' => $_POST['pseudo']));
        // Fin de mise à jour. Execution en cours ...
        $req = $bdd->prepare('INSERT INTO ms_chat_messages(usrname, message, date_creation) VALUES(?, ?, NOW())');
        $req->execute(array($_POST['pseudo'], $_POST['message']));
        header('Location: chat.php');
        }  
    ?>

  4. #4
    Membre émérite
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Par défaut
    Bonjour,

    un simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ( !isset($_SESSION['pseudo']) ) {
    $_SESSION['pseudo'] = "Inconnu";
    }
    ne suffirait pas ?

  5. #5
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Assez d'accord avec syl2095.

    Mais encore plus simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     <input type="text" style="width: 100px;" name="pseudo" value="inconnu" placeHolder="Pseudo"/>
    et tu enlèves

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $_SESSION['pseudo'] = "Inconnu";

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 3
    Par défaut
    Oui j'aurais pu ;3 ! Mais je pense avoir mal précisé en fait.

    Ce que je voulais faire, c'est qu'une fois que l'utilisateur avait envoyé son premier message, son pseudo se serait alors mit à jour à la fois dans la base de données, et dans le champ qui contient son pseudo pour éviter à avoir a le retaper sans cesse, au risque de voir souvent apparaître 'Inconnu', vous voyez :3 ?

    Désolé d'être si tardif en répondant xD

Discussions similaires

  1. problème de variable de session
    Par emilek dans le forum Langage
    Réponses: 1
    Dernier message: 18/09/2007, 13h10
  2. problème de variables de session avec Jpgraph
    Par fat dans le forum Langage
    Réponses: 1
    Dernier message: 02/07/2007, 17h26
  3. Réponses: 2
    Dernier message: 30/05/2007, 17h08
  4. Problème avec variables de session
    Par jorggy dans le forum Langage
    Réponses: 2
    Dernier message: 22/03/2007, 00h31
  5. Problème de variable de session.
    Par snowball_party dans le forum Langage
    Réponses: 7
    Dernier message: 16/09/2006, 16h38

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