Problème minichat.php
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Je suis en train de faire un petit espace membre et j'ai un problème au niveau du minichat, il n'affiche que les messages et pas les pseudo.
Sur une page register.php le visiteur s'inscrit avec un pseudo et un mot de passe. Le pseudo est mis das une session puis le visiteur est redirigé vers minichat.php (ou il doit taper un message). Cette page affiche le message avec le pseudo qui va avec ( récupéré avec $_SESSION["pseudo"].
Problème : pas de pseudo, enfaite le problème c'est que le pseudo n'apparait pas dans la base de donnée ( table = minichat )
Voici les codes :
register.php
Et minichat.php
Quelqu'un voit-il ou j'ai fais mon erreur ? Merci :-)
EDIT : Ajout du langage dans les balises de code
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
.
Je suis en train de faire un petit espace membre et j'ai un problème au niveau du minichat, il n'affiche que les messages et pas les pseudo.
Sur une page register.php le visiteur s'inscrit avec un pseudo et un mot de passe. Le pseudo est mis das une session puis le visiteur est redirigé vers minichat.php (ou il doit taper un message). Cette page affiche le message avec le pseudo qui va avec ( récupéré avec $_SESSION["pseudo"].
Problème : pas de pseudo, enfaite le problème c'est que le pseudo n'apparait pas dans la base de donnée ( table = minichat )
Voici les codes :
register.php
<?php include ("cnx.php"); //démarrage de la session session_start(); ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> </head> <body> <h2> Formulaire d'inscription : </h2> <form action="" method = "POST"> <label for="pseudo"> pseudo : </label> </br> <input type="texte" name = "pseudo" /> </br> <label for="password"> Password : </label> </br> <input type="password" name = "password" /> </br> <input type="submit" value ="Inscription" /> </form> <?php // On vérifie que le formulaire à été complété et si les champs ne sont pas vides if ( isset($_POST) && (!empty($_POST['pseudo'])) && (!empty($_POST['password'])) ) { //On met le résultat pseudo du formulaire dans $pseudo $pseudo = addslashes($_POST["pseudo"]) ; $password = addslashes($_POST["password"]) ; //préparation de la requête $params = array(":pseudo"=>$pseudo); $sql = "SELECT pseudo FROM utilisateurs WHERE pseudo = :pseudo" ; // execution de la requete $query = $cnx->prepare($sql); $query->execute($params); //Récupère tous les résultats dans un ARRAY $result = $query->fetchAll(); $nbResult = count($result); if($nbResult==1) { echo'Ce pseudo est déjà utilisé'; } else { $sql ="INSERT INTO utilisateurs (pseudo, password) VALUE (:pseudo, '$password')"; $params = array(":pseudo"=>$pseudo); $query = $cnx->prepare($sql); $result = $query->execute($params); $_SESSION["pseudo"] = addslashes($_POST['pseudo']) ; header("location: minichat.php") ; } } ?> </body> </html>
Et minichat.php
<?php //démarrage de la session session_start(); ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Mini-chat</title> </head> <body> <form action="" method="post"> <p> <label for="message">Message</label> : <input type="text" name="message" id="message" /><br /> <input type="submit" value="Envoyer" /> </p> </form> <p> <a href="logout.php"> Déconnection </a> </p> <?php // Connexion à la base de données try { $cnx = new PDO('mysql:host=mysql.hostinger.fr;dbname=u214604578_dunce', 'u214604578_user', 'motdepasse'); } catch(PDOException $e) { die('Erreur : '.$e->getMessage()); } if ( isset($_POST) && (!empty($_POST['message'])) ) { //On met le résultat pseudo du formulaire dans $pseudo $message = addslashes($_POST["message"]) ; //préparation de la requête $params = array(":message"=>$message); $sql = "INSERT INTO minichat (pseudo, message) VALUES($_SESSION['pseudo'], :message)" ; // execution de la requete $query = $cnx->prepare($sql); $query->execute($params); $_SESSION["poste"] = true; } else { echo"renseigner un message !"; } //récupération des messages if($_SESSION["poste"] == true) { // Récupération des 10 derniers messages //On met le résultat pseudo du formulaire dans $pseudo $message = addslashes($_POST["message"]) ; //préparation de la requête $sql = "SELECT pseudo, message FROM minichat ORDER BY ID DESC LIMIT 0, 30" ; // execution de la requete $query = $cnx->prepare($sql); $query->execute(); // Affichage de chaque message (toutes les données sont protégées par htmlspecialchars) while ($donnees = $query->fetch()) { echo '<p><strong>' . htmlspecialchars($donnees["pseudo"]) . '</strong> : ' . htmlspecialchars($donnees["message"]) . '</p>'; } } ?> </body> </html>
Quelqu'un voit-il ou j'ai fais mon erreur ? Merci :-)
EDIT : Ajout du langage dans les balises de code
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
.
1 réponse
Bonjour,
Premier point.... tu as un fichier de connexion à ta BDD ....
pourquoi ne pas l'utiliser dans ton fichier minichat.php plutôt que de réécrire le code de connexion ???
Ensuite ....
prends l'habitude de tester avec ISSET tes variables AVANT de les utiliser (il me semblait te l'avoir déjà dit .. ^^ )
Donc , dans minichat.php
Premier point.... tu as un fichier de connexion à ta BDD ....
pourquoi ne pas l'utiliser dans ton fichier minichat.php plutôt que de réécrire le code de connexion ???
Ensuite ....
prends l'habitude de tester avec ISSET tes variables AVANT de les utiliser (il me semblait te l'avoir déjà dit .. ^^ )
Donc , dans minichat.php
<?php //démarrage de la session session_start(); ?> //Connexion à la BDD include ("cnx.php"); //récupération des variables $message = isset($_POST["message"])?addslashes($_POST["message"]) :NULL; $pseudo = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL; if ( $pseudo && !empty(message ) ) { //préparation de la requête $params = array(":message"=>$message,":pseudo"=>$pseudo); $sql = "INSERT INTO minichat (pseudo, message) VALUES(:pseudo, :message)" ; // execution de la requete $query = $cnx->prepare($sql); $query->execute($params); $_SESSION["poste"] = true; } else { echo"renseigner un message !"; //--------------------------------------------------// // Le temps des tests : echo "<br> SESSION : <br>"; print_r($_SESSION); echo "<br> Message : <br>"; echo $message; //--------------------------------------------------// }
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
.