Problème de retour à la ligne.
RésoluMax747 Messages postés 258 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 11 janvier 2024 - 11 janv. 2024 à 17:01
- Problème de retour à la ligne.
- Aller à la ligne excel - Guide
- Site de vente en ligne particulier - Guide
- Echo retour à la ligne ✓ - Forum Shell
- Partage de photos en ligne - Guide
- Notepad++ retour à la ligne ✓ - Forum Bureautique
6 réponses
3 janv. 2024 à 11:52
Bonjour
NL2BR
En Js:
https://gist.github.com/yidas/41cc9272d3dff50f3c9560fb05e7255e
En php
https://www.php.net/manual/fr/function.nl2br.php
5 janv. 2024 à 10:19
Merci pour cette possibilité avec NL2BR que j'ai inséré dans ce script à la ligne 17 ci dessous.
<script> setInterval(function() { /*alert ("Bonjour");*/ $("#chat_aff").load("chat_control.php",function(){}); //$("#chat").load("chat_control.php",function(){}); },1000); $("#submit").click(function() { var name = $("#name").val(); var message = $("#message").val(); var message = nl2brJS(message); $("#message").val(""); $.ajax({ async: false , type: 'GET', url: 'chat_control.php?name='+name+'&message='+message }); }); </script>
Cependant les retours à la ligne dans la zone de lecture du chat ne se réalisent toujours pas.(Alors qu'elles sont visibles dans celle présentée pour rédiger un message.)
Serait il possible que tu puisses m'indiquer plus précisément comment utiliser la fonction NL2BR dans mon fichier chat.php ?
Merci.
5 janv. 2024 à 11:58
Bonjour,
Comme indiqué dans le lien que je t'ai donné
<?php $foo = nl2br($tavariable);
6 janv. 2024 à 10:24
Bonjour.
Oui ça je savais.
Ce qui m'a amené sur le fichier suivant (chat_control.php) que voici:
<?php session_start(); require_once("chat_modele.php"); $bdd = bdd(); if (!empty($_GET['message'])) { // Récupération du contenu brut $rawMessage = $_GET['message']; // Convertir les retours à la ligne en balises <br> $formattedMessage = nl2br($rawMessage); } @$messag = htmlspecialchars($_GET['message']); if (isset($_GET['name']) && isset($messag)) { // Convertir les retours à la ligne en balises <br> et éviter les attaques XSS $messag = nl2br($messag); $messag = html_entity_decode($messag); // Enregistrement du message dans la base de données ajout_message($bdd, $_GET['name'], $messag); } else { // Expire les messages (si nécessaire) expire_message($bdd); // Récupérer les messages de la base de données $message = message($bdd); // Afficher la vue require_once("chat_vue.php"); } ?>
Où l'on peut voir en lignes 12 et 19 la conversion des retours à la ligne.
Cependant avec tout le mal que je me suis donné, je n'ai pas de chance car actuellement cela ne fonctionne qu'en mode local!
Alors que sur mon serveur distant les retours à la ligne ne se réalisent pas.
Sans doute qu'une petite amélioration de ce script me permettrait d'aboutir à un fonctionnement optimal sur serveur distant?
Je crois que l'on y est presque si tu veux bien me fournir un dernier "coup de pouce" ?
Quand cela fonctionnera parfaitement, je pourrai te donner tous les fichiers permettant d'utiliser ce chat en adaptant celui permettant de se connecter à ton serveur bien sure. Ainsi que les fichiers CSS et la table pour la base de donnée.
Tout un programme.....
6 janv. 2024 à 10:40
Alors ....
Les fonctions nl2br .... , html_entity_decode, et htmlspecialchars.. sont des fonctions à utiliser EXCLUSIVEMENT pour faire l'affichage ... et JAMAIS pour traiter les chaines de caractères avant leur insertion en BDD !
Les données, en BDD, s'ajoutent "brutes"... et c'est seulement lors de l'affichage des données que tu les mets dans le format que tu souhaites.
Le traitement devrait donc se trouver dans le fichier
"chat_vue.php"
7 janv. 2024 à 09:00
Bonjour.
Ainsi si je comprends bien, les injections SQL peuvent être insérées dans une tables. Pourvu qu'ensuite elles soient traitées par htmlspecialchars après la sélection des données de cette table par SELECT par exemple.
Et cela sans danger pour l'intégrité de la table ou de la base de donnée?
Si c'est cela, merci pour l'info qui permettrait d'obtenir un bonne précision une bonne fois pour toute!
7 janv. 2024 à 12:17
Les failles d'injection sql sont gérées via les requêtes préparées .... pas par les fonctions que je t'ai cité qui ne doivent servir qu'à de l'affichage ( je me répète.. )
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question8 janv. 2024 à 07:50
Pardon, mais à ce que j'ai appris, htmlspecialchars qui fait partie d'une fonction que tu m'as cité, sert à éviter les attaques XSS (Cross-Site Scripting) par injection de codes dans la partie écriture de mon chat!
J'utilise en plus des requêtes préparées pour éviter d'autres injections (SQL) telles que ci dessous:
function ajout_message($bdd,$username,$message) { $bdd = bdd(); $req = ("INSERT INTO annonce(Pseudo,Message,Date) VALUES(:Pseudo,:Message,NOW())"); $datas = array(":Pseudo"=>$_SESSION['username'],":Message"=>$message); //Execution de la requete try{ $requete = $bdd -> prepare($req) ; $requete->execute($datas) ; }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } } function message($bdd) { // Préparez votre requête SQL $requete = $bdd->prepare("SELECT ID, Pseudo, Message, Date FROM annonce ORDER BY Date DESC"); // Exécute la requête $requete->execute(); // Retourne le résultat de la requête (objet PDOStatement) return $requete; }
La fonction message est utilisée dans le fichier chat_deux_vue.php que voici:
<?php require_once("chat_deux_modele.php"); $messages = message($bdd); ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8" /> <title>chat_vue</title> </head> <body> <table id="table_message"> <?php while ($don = $messages->fetch()) { if (pair($don['ID'])) { $color = ""; } else { $color = "#EDEDED"; } ?> <tr style="background-color:<?php echo $color; ?>"> <td class="info_message" valign="top"> <span style="font-size:small"><?php echo 'De ' . $don['Pseudo']; ?></span></br> <?php $_SESSION['joueur'] = $don['Pseudo']; sscanf($don['Date'], "%4s-%2s-%2s %2s:%2s", $annee, $mois, $jour, $heure, $minute); $heure = $heure + 1; echo $jour.'/'.$mois.'/'.$annee.' '.$heure.':'.$minute; ?> </td> <td class="message" > <div class="message2" > <?php // Applique les transformations nécessaires au message $message = htmlspecialchars($don['Message']); $message = nl2br($message); $message = html_entity_decode($message); // Affiche le message echo $message; ?> </div> </td> </tr> <?php } ?> </table> </body> </html>
Tout cela me permet désormais de faire fonctionner correctement mon chat aussi bien en local qu'en serveur distant!
Quand aux fonctions réservées pour l'affichage elles sont désormais utilisées pour afficher les textes avec les retours à la ligne.
Enfin, les retours à la ligne sont présents dans ma table par <br> qui séparent les phrases tout en restant sur la même ligne dans le champ Message de la table.
Il me reste une question à te poser:
Y aurait il, à ton avis, encore une amélioration à apporter aux scripts que je te présente aujourd'hui ?
11 janv. 2024 à 17:01
Bonjour.
Voyant qu’apparemment il n'y a plus d'amélioration possible à ce script, je déclare ce sujet résolu.
Cdlt.