Méthode POST : caractères spéciaux
Bonjour, j'ai déjà évoqué ce problème dans la partie MySQL croyant que ça venait de là mais finalement les conclusion mènent à penser que la méthode POST est en cause.
Voici le problème :
J'ai un formulaire XHTML qui envoie par méthode POST du texte dans une page PHP, mais dans le texte récupéré dans cette page certains caractères spéciaux sont convertis en équivalent HTML.
Voici les codes utilisés :
Le formulaire XHTML
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| <form method="post" action="./valide_livredor.php"><p class="formulaire">
<label for="pseudo">Votre pseudo :</label>
<input type="text" id="pseudo" name="pseudo" value="" size="30" /> <br />
<label for="email">Votre email :</label>
<input type="text" id="email" name="email" value="" size="30" /> <br />
<label for="texte">Votre texte :<br /></label>
<textarea id="texte" name="texte" cols="40" rows="8"></textarea> <br />
<input class="bouton" type="reset" name="annule" value="Effacer" />
<input class="bouton" type="submit" name="valide" value="Envoyer" />
</p></form> |
Et le code php dans l'autre page :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| if($_POST['pseudo'] == "")
echo "Erreur : Vous n'avez pas indiqué de pseudo";
else if($_POST['texte'] == "")
echo "Erreur : Vous n'avez pas écrit de message";
else {
$texte = $_POST['texte'];
echo "<p>Texte brut : $texte </p>";
$texte = strip_tags($texte);
echo "<p>Texte filtre : $texte </p>";
$valeurs = '\''.$_POST['pseudo'].'\',\''.$_POST['email'].'\',\''.$texte.'\'';
$cmd = "INSERT INTO db_livredor(pseudo,email,texte,date) VALUES($valeurs,NOW())";
if($result = mysql_query($cmd))
{
echo "Votre message a bien été enregistré<br /><br />";
echo "<a href=\"./livredor.php\">Retour</a><br />";
echo "(redirection automatique)";
} else
echo "Erreur de requête de base de données.";
} |
Les deux echo de test ont donné pour ce message test :
Citation:
Test <br>
é è à ç ù
ce résultat dans le code source (de l'affichage de la page php) :
Code:
1 2 3 4
| <p>Texte brut : Test <br>
é & #232; & #224; ç & #249; </p>
<p>Texte filtre : Test
é & #232; & #224; ç & #249; </p> |
(sans les espaces après le &)
Je ne vois pas d'où peut venir cette conversion des caractères, de plus le 'é' et le 'ç' ne sont pas transformés eux
Merci d'avance