Insertion de smileys dans un tchat

Résolu/Fermé
sunev - 12 juil. 2017 à 12:48
 sunev - 12 juil. 2017 à 20:19
Bonjour,
Dans ce code qui est un minitchat, les smileys ne saffichent pas quand on clique sur « envoyer »
Seul le nom « (jaime) ou (allucine) » apparaissent au lieu des « gif ».
J’ai beau retourner ce code dans tous les sans je n’arrive pas a trouver l’erreur.
Si quelqu’un a une idée merci de m’en faire part
Tout le reste fonctionne bien, date, heure, réactualisation, les icones apparaissent bien sur la page du tchat
Quand on clique dessus il s’insèrent bien dans le message mais a l’envoie c’est le l’image du gif qui devrait apparaitre pas son nom.
Merci de vos éventuelles réponses .

Tout ce qui concerne les smIleys est mis en gras

<?php
//connection a la BDD
include("mini_tchat_inc_connect_bdd.php");
?>
<!DOCTYPE html>
<html><head>
<title>TChat</title> <meta charset="utf-8">
<!--Google hosted jquery -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
</head>
<body>
<?php
//traitement du submit
//récupération PROPRE des variables AVANT de les utiliser :
$message = !empty($_POST['message']) ? $_POST['message'] : NULL;
$pseudo = !empty($_POST['pseudo']) ? $_POST['pseudo'] : NULL;
//Insertion en bdd si non vide
if ($pseudo && $message) {
$sql = "INSERT INTO chat ( pseudo, message, creation) VALUES(?, ?, NOW())";
$datas = array($pseudo,$message);

$message = str_replace('(jaime)','<img src="smileys/lover.gif">',$message);
$message = str_replace('(allucine)','<img src="smileys/eek.gif">',$message);

try{
$prep = $bdd->prepare($sql);
$prep->execute($datas);
}catch(Exception $e){
echo " Erreur : ".$e->getMessage();
}
}
//Liste des messages
$sql = "SELECT pseudo, message, DATE_FORMAT(creation, '%d/%m/%Y Ã %Hh%i') AS DATECREATION
FROM chat ORDER BY ID DESC LIMIT 0, 10";
try{
$prep = $bdd->prepare($sql);
$prep->execute();
$allmsg = $prep->fetchAll(); // on stocke les résultats dans un array
}catch(Exception $e){
echo " Erreur : ".$e->getMessage();
}
?>

<form name="formulaire1" method="post" action="">
<p><label for="pseudo">Pseudo :</label> <input class="text" type="text" placeholder="PSEUDO" name="pseudo" value="<?php
if (isset($pseudo)) { echo $pseudo; } ?>" /></p>
<p><label for="message">Message :</label> <textarea type="text" placeholder="MESSAGE" name="message" cols="40" rows="4" autofocus></textarea></p>

<div class="centre">
<table class="centre" cellpadding="5" border="0">
<tr >
<td><a class="pointeur" onclick='inserticon("(jaime)");'><img src='smileys/lover.gif'></A></td>
<td><a class="pointeur" onclick='inserticon("(allucine)");'><img src='smileys/eek.gif'></A></td>

</tr>
</table>
</div>
<p><input type="submit" value="Envoyer"></p>
</form>

<div id="messages">
<?php
if(!empty($allmsg)){
foreach($allmsg as$donnees){
echo
'<P class="messag"> '
. $donnees['DATECREATION']. ':<strong> '
. htmlspecialchars($donnees['pseudo']) .'</strong> : '
. htmlspecialchars($donnees['message'])
. '</p>';
}
}
?>
</div>

<script language='JavaScript'>
<!--
var nom;
function inserticon(nom){
var temps;
temps=formulaire1.message.value;
temps=temps+''+nom+''
formulaire1.message.value=temps;
}
//-->
</script>


<script>
setInterval('load_messages()', 5000);
function load_messages(){
$('#messages').load('essai_mini_tchat_load_messages.php');
}
</script>
</body></html>




3 réponses

ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 565
Modifié le 12 juil. 2017 à 14:26
Salut,

tu as ceci :

    $datas = array($pseudo,$message);
    
    $message = str_replace('(jaime)','<img src="smileys/lover.gif">',$message);
    $message = str_replace('(allucine)','<img src="smileys/eek.gif">',$message); 


Si tu fais ta conversion avant de mettre tes variables dans $datas (data ne prend pas de s, mais on s'en fiche pour ton problème :p), ça devrait aller mieux.
0
tu veut dire comme ça

    $message = str_replace('(jaime)','<img src="smileys/lover.gif">',$message);
$message = str_replace('(allucine)','<img src="smileys/eek.gif">',$message);

$data = array($pseudo,$message);


ça donne ça "<img src="smileys/lover.gif">" a l'affichage à la place de
"(jaime)" mais aucun gif en vu
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 565
12 juil. 2017 à 15:31
à cause de ton htmlspecialchars au moment de ton affichage je pense.

Tu as plusieurs possibilités, moi à ta place, j'enregistrerais dans la base les messages avec tes codes (jaime) and co, et je fais la conversion uniquement au moment de l'affichage
0
ok ThEBiShOp
c'est bien htmlspecialchars qui empêché l'affichage des gif, je les ai enlevé et ça fonctionne, mais la protection est enlevée
quand a les enregistrer dans la base de données il va falloir que je me penche sur le probléme.
Merci a toi de tes réponses
0