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

PHP & Base de données Discussion :

récupérer la variable pseudo d'une table msql via un cookie ou une session [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Juillet 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2015
    Messages : 59
    Points : 32
    Points
    32
    Par défaut récupérer la variable pseudo d'une table msql via un cookie ou une session
    Bonjour,

    je suis débutant en php et je développe un chat qui permet d'incrémenter des messages et des pseudos dans une base de données msql via un formulaire - jusque là, pas de problème.

    Je souhaiterais créer une session / un cookie qui conserve le pseudo de l'utilisateur après l'envoi d'un premier message et l'affiche dans le champ de pseudo ; et là, je n'y arrive pas ... ça fait 3 jours que je m'échine sur ce problème sans trouver de solution ...

    Quelqu'un pourrait-il venir à mon aide ?

    Par avance merci.

  2. #2
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Salut,
    Peux-tu donner un peu de code et dire où tu te limites vraiment ?
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Juillet 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2015
    Messages : 59
    Points : 32
    Points
    32
    Par défaut Bonjour THES32 et Grand Merci !!!
    Et bien voilà, mon chat est constitué de deux pages.

    Voici les codes de mes pages - en pièce jointes également car je n'ai pas trouvé le bouton </> qui permet un affichage propre ... mes excuses ...

    Page 01 :

    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
    <?php
    $temps = 365*24*5500;
    setcookie ("pseudo", "LA GLOBULE", time() + $temps);
     
    ?>
     
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Mini-chat</title>
        </head>
        <style>
        form
        {
            text-align:center;
        }
        </style>
        <body>
     
        <form action="minichat_post_Cookie.php" method="post">
            <p>
            <label for="pseudo">Pseudo</label> : <input type="text" name="pseudo" id="pseudo" value="'<?php if (isset($_COOKIE['pseudo'])) {echo $_COOKIE['pseudo'];}  ?> '"  /><br />
            <label for="message">Message</label> :  <input type="text" name="message" id="message" /><br />
     
            <input type="submit" value="Envoyer" />
        </p>
        </form>
     
    <?php
    // Connexion à la base de données
    try
    {
        $bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
    }
    catch(Exception $e)
    {
            die('Erreur : '.$e->getMessage());
    }
     
    // Récupération des 10 derniers messages
    $reponse = $bdd->query('SELECT DATE_FORMAT(date, \'le %d/%m/%Y à %Hh%imin%ss\') AS date_creation, pseudo, message FROM minichat_ameliore ORDER BY ID DESC LIMIT 0, 10');
     
    // Affichage de chaque message (toutes les données sont protégées par htmlspecialchars)
    while ($donnees = $reponse->fetch())
    {
     
        echo '<p>' . $donnees['date_creation'] . '   <strong>' . htmlspecialchars($donnees['pseudo']) . '</strong> : ' . htmlspecialchars($donnees['message']) . '</p>';
    }
     
    $reponse->closeCursor();
     
    ?>
        </body>
    </html>
    Page 02 :

    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
    <?php
     
     
    // Connexion à la base de données
    try
    {
        $bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
    }
    catch(Exception $e)
    {
            die('Erreur : '.$e->getMessage());
    }
    $date_creation_fr = 
    // Insertion du message à l'aide d'une requête préparée
    $req = $bdd->prepare('INSERT INTO minichat_ameliore (pseudo, message, date) VALUES(?, ?, NOW())');
    $req->execute(array($_POST['pseudo'], $_POST['message']));
     
    // Redirection du visiteur vers la page du minichat
    header('Location: Minichat_Cookie.php');
    ?>
    Fichiers attachés Fichiers attachés

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Juillet 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2015
    Messages : 59
    Points : 32
    Points
    32
    Par défaut Bonjour THES32 et Grand Merci !!! Suite
    Mon problème est que je voudrais qu'après avoir émis un commentaire qui est enregistré dans la base sql via le formulaire de la première page, le pseudo de l'auteur du message soit affiché dans le champs "Pseudo" du formulaire, toujours en première page - puisque ma seconde page renvoie automatiquement sur le première pour affichage du message ...

    J'espère avoir été clair.

    Je suis débutant en php, je ne vois pas bien comment récupérer le pseudo sur la base de données ... On m'a dit que cela ne se pouvait pas en SQL et qu'il fallait créer un troisième page - avant ma page de chat - qui permette de mettre en place une session ...

    Vas-tu dans ce sens ?

    Merci pour ton avis.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    pour pouvoir utiliser les variables de SESSION, il faut mettre en toute 1ère ligne de chaque page (hors fichier inclus !) :
    voir :

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Juillet 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2015
    Messages : 59
    Points : 32
    Points
    32
    Par défaut Merci Jreaux62
    Merci pour cette information mais cela ne répond pas tout à fait à ma question ...

    Faut-il créer un troisième page pour afficher le pseudo de l'auteur d'un message dans le champ de mon formulaire ?

    Tous les trutoriels que je vois parle d'une page sécurisée avec mot de passe et je souhaite simplement afficher un pseudo dans ce champ de formulaire ... Est-ce possible ou pas ...?

    Merci pour vos interventions.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Pour quoi faire ?

    Tu enregistre $_POST['pseudo'] dans $_SESSION['pseudo'], que tu peux réafficher quand et où tu veux.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Juillet 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2015
    Messages : 59
    Points : 32
    Points
    32
    Par défaut
    Merci pour cette piste jreaux, je viens d'essayer le script - le code de ma première page ci-dessous - suivant qui m'affiche le message suivant (avec lequel je me bagarre depuis 3 jours ...) :

    Notice: Undefined index: pseudo in C:\wamp\www\Cours\Php\05_Stocker_Informations_Base_Donnees\02_Ecrire_Donnees\07_Activite_Minichat_Ameliore\Minichat.php on line 3


    manifestement je n'ai pas défini ma variable mais laquelle ... ?

    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
    <?php
    session_start();
    $_SESSION['pseudo'] = $_POST['pseudo']; 
     
    ?>
     
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Mini-chat</title>
        </head>
        <style>
        form
        {
            text-align:center;
        }
        </style>
        <body>
     
        <form action="minichat_post.php" method="post">
            <p>
            <label for="pseudo">Pseudo</label> : <input type="text" name="pseudo" id="pseudo" value="'<?php if (isset($_SESSION['pseudo'])){ echo $_SESSION['pseudo'];} ?> '"  /><br />
            <label for="message">Message</label> :  <input type="text" name="message" id="message" /><br />
     
            <input type="submit" value="Envoyer" />
    	</p>
        </form>
     
    <?php
    // Connexion à la base de données
    try
    {
    	$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
    }
    catch(Exception $e)
    {
            die('Erreur : '.$e->getMessage());
    }
     
    // Récupération des 10 derniers messages
    $reponse = $bdd->query('SELECT DATE_FORMAT(date, \'le %d/%m/%Y à %Hh%imin%ss\') AS date_creation, pseudo, message FROM minichat_ameliore ORDER BY ID DESC LIMIT 0, 10');
     
    // Affichage de chaque message (toutes les données sont protégées par htmlspecialchars)
    while ($donnees = $reponse->fetch())
    {
     
    	echo '<p>' . $donnees['date_creation'] . '   <strong>' . htmlspecialchars($donnees['pseudo']) . '</strong> : ' . htmlspecialchars($donnees['message']) . '</p>';
    }
     
    $reponse->closeCursor();
     
    ?>
        </body>
    </html>

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Juillet 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2015
    Messages : 59
    Points : 32
    Points
    32
    Par défaut Merci Jreaux !!!
    Ok j'ai trouvé !!! tant ça commençait à me faire pleurer ce machin - pourtant simple ....

    En tête de première page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    session_start();
    if(isset($_POST['pseudo']))
    {
      $_SESSION['pseudo']=$_POST['pseudo'];
    }
    ?>
    ça marche ... Jésus !!!

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Juillet 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2015
    Messages : 59
    Points : 32
    Points
    32
    Par défaut Toute petite dernière question ....
    Jreau, juste pour ma curiosité, aurait-il été possible de réaliser la même chose avec un cookie ?

    Merci encore pour ta piste et pour cette possible réponse.

  11. #11
    Invité
    Invité(e)
    Par défaut
    cookie et SESSION n'ont pas la même utilité.

    Les variables de SESSION :
    • n'existent que... durant la session en cours
    • sont enregistrée coté serveur

    Ils peuvent servir :
    • à garder l'identification de l'utilisateur durant le temps de la connexion au site.
    • à conserver provisoirement les données d'un panier, ou d'une recherche,...


    Les cookies :
    • sont enregistrés sur l'ordinateur de l'internaute (coté client, donc).

    Ils peuvent servir :
    • à enregistrer durablement des informations,
    • et les récupérer à la visite suivante du site (quelques heures ou mois plus tard !)

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Juillet 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2015
    Messages : 59
    Points : 32
    Points
    32
    Par défaut
    Ok merci JReaux pour ta confirmation. Ils n'ont pas la même utilité mais peuvent être utilisés de manière identique.

    Merci pour ton aide et à une prochaine certainement.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/04/2009, 16h32
  2. [MySQL] Insérer des données dans une table, mais ce n'est pas une table USER
    Par amerex dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 16/08/2008, 00h01
  3. Une table.. qui ne ressemble pas a une table ?
    Par zevince dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 23/04/2007, 11h14
  4. Accéder à une table dont le nom est dans une table
    Par claralavraie dans le forum Oracle
    Réponses: 7
    Dernier message: 26/12/2006, 15h51
  5. UPDATER le champ d'une table 1 avec le champ d'une table 2
    Par alain.dissoir dans le forum Oracle
    Réponses: 2
    Dernier message: 08/06/2005, 13h07

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