JeuWeb - Crée ton jeu par navigateur
Probleme de caractére...[Résolu] - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Probleme de caractére...[Résolu] (/showthread.php?tid=766)



Probleme de caractére...[Résolu] - Pyl - 06-02-2007

J'ai un soucis au niveau de ma messagerie...

Citation : Euh... Qui va te soigner si tu meurs?... Va falloir bien te proteger, on essaiera de former un carré autour de toi ou de façon qu tu reste à l'arriere. On essai de trouver une solution sur le forum de l'alliance.

Comme vous pouvez le constater tout es "à" "é" "è" etc... bug...
Vue que ceci ne se produit qu'a la lecture du message j'en conclue que la transformation en caractéres spéciaux à l'entrée dans la BDD ce fait correctement, mais au moment de la lecture les déchifrages ne ce fait pas...

Voila le script de ma messagerie Smile

Code PHP :
<?
session_start
();
include(
'zone-page/haut.php');
include(
'zone-page/menu-gauche.php');
include(
'zone-page/droit.php');
include(
'bdd.php');
include(
'function.php');
@
session_start();
$id =$_SESSION['id'];
$perso =$_SESSION['perso'];
$choix =getvar('az');
echo
'<center><a href="messagerie.php?az=1">envoyer un message</a><br/> <a href="messagerie.php?az=2">boite de réception</a><br/> <a href="messagerie.php?az=3">boite d\'envoi</a></center><br><br>';
switch(
$choix)
{
///////
// ECRIRE MESSAGE
///////
case '1':
echo
'<center><form action="messagerie?az=4" method="post">';
echo
'<b>Destinataire:</b><br><input size="20" maxlength="30" name="perso"><br><br>';
echo
'<b>Sujet:</b><br><input size="15" name="sujet" maxlength="120" value="Sans Titre"><br><br>';
echo
'<b>Message:</b><br><textarea name="message" cols="50" rows="10"></textarea><br><br>';
echo
'<input type="submit" value="envoyer"></form></center>';
break;
///////
// VOIR MESSAGES
///////
case '2':
$res = $db->extract_one("SELECT id FROM messagerie WHERE id_perso='$id' AND destinataire='1'",'num_rows');
if(
$res=='0')
{
echo
'<center><i>Vous n\'avez pas de message.</i></center>';
}
else
{
$sql= mysql_query("SELECT id,date,id_perso_deuxieme,sujet FROM messagerie WHERE id_perso='$id' AND destinataire='1'");
echo
'<table border="1">';
echo
'<tr><td width="400">Sujet</td><td width="150">Expéditeur</td><td width="150">date</tr>';
while(
$message=mysql_fetch_array($sql))
{
$date=$message['date'];
$idperso=$message['id_perso_deuxieme'];
$perso1= $db->extract_one("SELECT joueur_pseudo FROM membres WHERE id='$idperso'");
echo
'<tr><td><a href="messagerie.php?az=5&lire='.$message['id'].'">'.$message['sujet'].'</a></td><td>'.$perso1['joueur_pseudo'].'</td><td>'.date("d/m/Y",$date).' à '.date("H:i:s",$date).'</tr>';
}
echo
'</table>';
}
break;
///////
// BOITE DENVOIE
///////
case '3':
$res = $db->extract_one("SELECT id FROM messagerie WHERE id_perso='$id' AND destinataire='0'",'num_rows');
if(
$res=='0')
{
echo
'<center><i>Vous n\'avez pas envoyé de message.</i></center>';
}
else
{
$sql= mysql_query("SELECT id,date,id_perso_deuxieme,sujet FROM messagerie WHERE id_perso='$id' AND destinataire='0'");
echo
'<table border="1">';
echo
'<tr><td width="400">Sujet</td><td width="150">Destinataire</td><td width="150">date</tr>';
while(
$message=mysql_fetch_array($sql))
{
$date=$message['date'];
$idperso=$message['id_perso_deuxieme'];
$perso1= $db->extract_one("SELECT joueur_pseudo FROM membres WHERE id='$idperso'");
echo
'<tr><td><a href="messagerie.php?az=5&lire='.$message['id'].'">'.$message['sujet'].'</a></td><td>'.$perso1['joueur_pseudo'].'</td><td>'.date("d/m/Y",$date).' à '.date("H:i:s",$date).'</tr>';
}
echo
'</table>';
}
break;
///////
// ACT ECRIRE MESSAGE
///////
case '4':
$destinataire =secure_string(getvar('perso'));
$sujet =secure_string(getvar('sujet'));
$message =secure_string(getvar('message'));
$res = $db->extract_one("SELECT id FROM membres WHERE joueur_pseudo='$destinataire'",'num_rows');
if(
$res!='0')
{
$data= $db->extract_one("SELECT id,camp FROM membres WHERE joueur_pseudo='$destinataire'");
$id_destinataire=$data['id'];
$camp_destinataire=$data['camp'];
$perso= $db->extract_one("SELECT id,camp FROM membres WHERE id='$id'");
$camp_perso=$perso['camp'];
if(
$camp_perso==$camp_destinataire)
{
$chance_denvoie=rand(1,5);
if(
$chance_denvoie=='1')
{
echo
'<center>Message envoy&eacute;.</center>';
}
else
{
mysql_query("INSERT INTO messagerie (id_perso, id_perso_deuxieme, sujet , message,vu, date,destinataire) VALUES ( '$id','$id_destinataire','$sujet','$message','1','".time()."' ,'0')");
mysql_query("INSERT INTO messagerie (id_perso, id_perso_deuxieme, sujet , message,vu, date,destinataire) VALUES ( '$id_destinataire','$id','$sujet','$message','0','".time()."' ,'1')");
echo
'<center>Message envoy&eacute;.</center>';
}
}
else
{
echo
'<center>Ce perso est un ennemi.</center>';
}
}
else
{
echo
'<center>Le perso n\'existe pas.</center>';
}
break;
///////
// LIRE MESSAGE
///////
case'5':
$message_a_lire=getvar('lire');
$data= $db->extract_one("SELECT * FROM messagerie WHERE id='$message_a_lire'");
// si le message est bien pour le perso.
$id_perso=$data['id_perso'];
if(
$id==$id_perso)
{
$sql = "UPDATE messagerie SET vu = '1' WHERE id='$message_a_lire'";
$req = mysql_query($sql) or die(mysql_error());
$date=$data['date'];
$id_perso_deuxieme=$data['id_perso_deuxieme'];
$perso1= $db->extract_one("SELECT joueur_pseudo FROM membres WHERE id='$id_perso_deuxieme'");
echo
'<b>Message de : </b><i>'.$perso1['joueur_pseudo'].' le '.date("d/m/Y",$date).' à '.date("H:i:s",$date).'.</i>';
echo
'<br><b>Sujet :</b><i> '.$data ['sujet'].'</i>';
echo
'<br><b>Message :</b><i> '.secure_string($data ['message']).'</i>';
echo
'<br><br><font size="3"><a href="messagerie.php?az=6&rep='.$message_a_lire.'">répondre</a> | <a href="messagerie.php?az=7&supr='.$message_a_lire.'">effacer</a></font>';
}
else
{
echo
'<center>Ce message ne vous ai pas destin&eacute;.</center>';
}
break;
///////
// REPONDRE
///////
case'6':
$rep=getvar('rep');
$data= $db->extract_one("SELECT * FROM messagerie WHERE id='$rep'");
// si le message est bine pour le perso.
$id_perso=$data['id_perso'];
if(
$id==$id_perso)
{
$id_perso_deuxieme=$data['id_perso_deuxieme'];
$perso1= $db->extract_one("SELECT joueur_pseudo FROM membres WHERE id='$id_perso_deuxieme'");
echo
'<center><form action="messagerie?az=4" method="post">';
echo
'<b>Destinataire:</b><br><input size="20" maxlength="30" name="perso" value="'.$perso1['joueur_pseudo'].'"><br><br>';
echo
'<b>Sujet:</b><br><input size="15" name="sujet" maxlength="120" value="RE : '.$data['sujet'].'"><br><br>';
echo
'<b>Message:</b><br><textarea cols="50" rows="10" name="message"></textarea><br><br>';
echo
'<input type="submit" value="envoyer"></form></center>';
}
break;
///////
// EFFACER
///////
case'7':
$supr=getvar('supr');
$data= $db->extract_one("SELECT * FROM messagerie WHERE id='$supr'");
// si le message est bien pour le perso.
$id_perso=$data['id_perso'];
if(
$id==$id_perso)
{
$sql = "DELETE FROM messagerie WHERE id='$supr'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
echo
'<center>Message supprim&eacute;.</center>';
}
break;
}
include(
'zone-page/droit2.php');
?>



RE: Probleme de caractére... - Roworll - 06-02-2007

Je suppose que lors de la sauvegarde des messages, secure_string utilise htmlentities() ou quelque chose d'équivalent pour coder les caractères..

A la relecture des informations, il faut faire l'opération inverse.
Un simple html_entity_decode suffira peut être.


RE: Probleme de caractére... - icien - 06-02-2007

Tu peux montrer ce que fait ta fonction secure_string.

Sinon je pense qu'en remplacant ca:
Code PHP :
<?php 
echo'<br><b>Message :</b><i> '.secure_string($data ['message']).'</i>';
par ca :
Code PHP :
<?php 
echo'<br><b>Message :</b><i> '.$data ['message'].'</i>';
dans la partie lire message ca devrait mieux fonctionner.

car vu le message affiché :
Citation :tu reste &amp;agrave; l&amp;#039;arriere.
tu passe au moins 2* $data ['message'] dans la moulinette htmlentities(). (il remplace une fois à par &agrave; puis &agrave; par &amp;agrave; (&amp; = &))


RE: Probleme de caractére... - Pyl - 06-02-2007

En effett j'ai supprimé ce que tu ma dit et cela marche Smile

Le secure_string est, si mes souvenirs sont bon un dérivé de htmlentities()