Signaler

Insertion de smileys dans un tchat [Résolu]

Posez votre question sunev - Dernière réponse le 12 juil. 2017 à 20:19 par sunev
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>




Afficher la suite 
Utile
+0
plus moins
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.
Donnez votre avis
Utile
+0
plus moins
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
ThEBiShOp 8540Messages postés jeudi 22 mars 2007Date d'inscription ContributeurStatut 12 juillet 2017 Dernière intervention - 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
Répondre
Donnez votre avis
Utile
+0
plus moins
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
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !