creation chat

Eléphanteau du PHP | 10 Messages

10 juil. 2019, 21:07

Bonjour pour un exercice sur openclassroom je dois créer un tchat. Et j'ai créer une pages de connexion ou je demande à l'utilisateur un pseudo, sa date de naissance, son sexe, et sa région. Ces données vont bien dans la base de donnée pas de problème. Je voudrais que le pseudo suive l'utilisateur sur la page du chat.php pour qu'il puisse écrire ces message et voir comme ça: pseudo : message
Voila mes codes pour l'instant:

Code : Tout sélectionner

<?php $bdd = new PDO("mysql:host=localhost;dbname=chat;charset=utf8", "root", "", array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); if(isset($_POST['pseudo']) AND isset($_POST['birthday']) AND isset($_POST['type']) AND isset($_POST['country']) AND !empty($_POST['pseudo']) AND !empty($_POST['birthday']) AND !empty($_POST['type']) AND !empty($_POST['country'])) { $pseudo = htmlspecialchars($_POST['pseudo']); $birthday = htmlspecialchars($_POST['birthday']); $type = htmlspecialchars($_POST['type']); $country = htmlspecialchars($_POST['country']); $insertmsg = $bdd->prepare('INSERT INTO chat(pseudo, birthday, type, country) VALUES (?, ?, ?, ?)'); $insertmsg->execute(array($pseudo, $birthday, $type, $country)); header('Location: chat.php'); } ?> <!DOCTYPE html> <html> <head> <title>Chat</title> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="css/style.css"> </head> <body> <div id="form"> <h1>Chat</h1> <form action="" method="post"> <!--pseudo--> <p><label>Pseudo : <input type="text" name="pseudo" /></label></p> <!--age--> <p><label>Date de naissance : <input type="date" name="birthday" /></p> <!--sexe--> <!--homme--> <p><label>Sexe : <input type="radio" name="type" value="homme" id="homme" checked="checked" ><label>Homme</label> <!--femme--> <input type="radio" name="type" value="femme" id="femme" /><label>Femme</label> </label></p> <!--region--> <p><label>Region : <input type="text" name="country" id='country' /></label></p> <!--bouton envoyer--> <p><input type="submit" /> </p> </form> </div> </body> </html>

Code : Tout sélectionner

<?php // On définit un login de base pour tester notre exemple. CEpendant, vous pouvez très bien interroger votre base de données afin de savoir si le visiteur qui se connecte est bien membre de votre site $pseudo_valide = "pseudo"; // on teste si nos variables sont définies if(isset($_POST['pseudo'])) { // on vérifie les informations du formulaire, à savoir si le pseudo saisi est bien un pseudo autorisé if ($pseudo_valide == $_POST['pseudo']) { session_start(); // on enregistre les pramètres de notre visiteur comme variable de session $_SESSION['pseudo'] = $_POST['pseudo']; header ('location: chat.php'); } } $bdd = new PDO("mysql:host=localhost;dbname=chat;charset=utf8", "root", "", array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); if(isset($_POST['message']) AND $_POST['pseudo'] AND !empty($_POST['message'])) { $message = htmlspecialchars($_POST['message']); $insertmsg = $bdd->prepare('INSERT INTO chat(pseudo, message) VALUES (?, ?)'); $insertmsg->execute(array($pseudo, $message)); } ?> <!DOCTYPE html> <html> <head> <title>Chat</title> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="css/style.css"> </head> <body> <!--Div pour tout le chat--> <div id="grande"> <!--Titre du chat--> <h1 id="bandeau">chat<h1> <!--Menu du tchat haut pseudo bas salon--> <!--Contenu du tchat--> <div id="contenu"> <form action="" method="POST" value=""> </form> <?php $allmsg = $bdd->query('SELECT * FROM chat ORDER BY id DESC LIMIT 0, 5'); While($msg = $allmsg->fetch()) { ?> <?php echo '<p>' . $msg['pseudo'] . '-' . $msg['message'] . '</p>'; ?> <?php } ?> </div> <!--Zone de texte--> <div id="pied_page"> <form action="chat.php" method="POST"> <!--Votre message--> <label for="message">Message</label> : <input type="text" name="message" id="message" /> <br /> <input type="submit" value="Envoyer"> </form> </div> </div> </body> </html>
Merci à ceux qui vont prendre le temps de tout lire de me répondre et de m'aider à trouver une solution. Je pense qu'avec la méthode POST je peux réussir mais je n'ai pas réussi désolé je l'ai mis dans deux forum parce que je crois je me suis trompé en mySQL Excuser moi et je ne sais pas comment le supprimer ou rediriger vers ici pardon

Mammouth du PHP | 1587 Messages

11 juil. 2019, 13:22

tu as ta solution ici dans le 2ème code
$_SESSION['pseudo'] = $_POST['pseudo'];
header ('location: chat.php');

il faut faire la même chose à l'inscription, récupèrer le pseudo en session et le récupèrer si il existe.

Il faut aussi bien vérifier ton workflow, que ce passe t il lorsque le pseudo n'est pas "'authorisé" ?
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone de rubik's cube
Ingénieur Industriel Chimie / Biochimie

Eléphanteau du PHP | 10 Messages

12 juil. 2019, 18:05

J'ai fais comme ça :
La page de connexion

Code : Tout sélectionner

<?php $pseudo_valide = "pseudo"; if(isset($_POST['pseudo'])) { if ($pseudo_valide == $_POST['pseudo']) { session_start(); $_SESSION['pseudo'] = $_POST['pseudo']; header ('location: chat.php'); } } $bdd = new PDO("mysql:host=localhost;dbname=chat;charset=utf8", "root", "", array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); if(isset($_POST['pseudo']) AND isset($_POST['birthday']) AND isset($_POST['type']) AND isset($_POST['country']) AND !empty($_POST['pseudo']) AND !empty($_POST['birthday']) AND !empty($_POST['type']) AND !empty($_POST['country'])) { $pseudo = htmlspecialchars($_POST['pseudo']); $birthday = htmlspecialchars($_POST['birthday']); $type = htmlspecialchars($_POST['type']); $country = htmlspecialchars($_POST['country']); $insertmsg = $bdd->prepare('INSERT INTO chat(pseudo, birthday, type, country) VALUES (?, ?, ?, ?)'); $insertmsg->execute(array($pseudo, $birthday, $type, $country)); header('Location: chat.php'); } ?> <!DOCTYPE html> <html> <head> <title>Chat</title> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="css/style.css"> </head> <body> <div id="form"> <h1>Chat</h1> <form action="chat.php" method="post"> <!--pseudo--> <p><label>Pseudo : <input type="text" name="pseudo" /></label></p> <!--age--> <p><label>Date de naissance : <input type="date" name="birthday" /></p> <!--sexe--> <!--homme--> <p><label>Sexe : <input type="radio" name="type" value="homme" id="homme" checked="checked" ><label>Homme</label> <!--femme--> <input type="radio" name="type" value="femme" id="femme" /><label>Femme</label> </label></p> <!--region--> <p><label>Region : <input type="text" name="country" id='country' /></label></p> <!--bouton envoyer--> <p><input type="submit" /> </p> </form> </div> </body> </html>
La page du tchat:

Code : Tout sélectionner

<?php // On définit un login de base pour tester notre exemple. CEpendant, vous pouvez très bien interroger votre base de données afin de savoir si le visiteur qui se connecte est bien membre de votre site $pseudo_valide = "pseudo"; if(isset($_POST['pseudo'])) { if ($pseudo_valide == $_POST['pseudo']) { session_start(); $_SESSION['pseudo'] = $_POST['pseudo']; header ('location: chat.php'); } } $bdd = new PDO("mysql:host=localhost;dbname=chat;charset=utf8", "root", "", array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); if(isset($_POST['message']) AND !empty($_POST['message'])) { $message = htmlspecialchars($_POST['message']); $pseudo = htmlspecialchars($_POST['pseudo']); $insertmsg = $bdd->prepare('INSERT INTO chat(pseudo, message ) VALUES (?, ?)'); $insertmsg->execute(array( $pseudo, $message)); } ?> <!DOCTYPE html> <html> <head> <title>Chat</title> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="css/style.css"> </head> <body> <!--Div pour tout le chat--> <div id="grande"> <!--Titre du chat--> <h1 id="bandeau">chat<h1> <!--Menu du tchat haut pseudo bas salon--> <!--Contenu du tchat--> <div id="contenu"> <form action="" method="POST" value=""> </form> <?php $reponse = $bdd->query('SELECT pseudo, message FROM chat ORDER BY ID DESC LIMIT 0, 5'); while ($donnees = $reponse->fetch()) { echo '<p><strong>' . htmlspecialchars($donnees['pseudo']) . ' - ' . htmlspecialchars($donnees['message']) . '</p>' ; } ?> </div> <!--Zone de texte--> <div id="pied_page"> <form action="chat.php" method="POST"> <!--Votre message--> <label for="message">Message</label> : <input type="text" name="message" id="message" /> <br /> <input type="submit" value="Envoyer"> </form> </div> </div> </body> </html>
ça me met que le pseudo n'est pas défini. Voila le message: Notice: Undefined index: pseudo in C:\xampp\htdocs\chat\chat.php on line 26

Et je n'arrive pas à écrire comme ça : le pseudo: message
le pseudo je n'arrive pas à l'afficher sauf dans un autre cadre.

Mammouth du PHP | 1249 Messages

13 juil. 2019, 00:14

"tu as ta solution ici dans le 2ème code
$_SESSION['pseudo'] = $_POST['pseudo'];"

et il faut 2 tables sql, pas une seule.