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
Et le code php dans l'autre page :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
Les deux echo de test ont donné pour ce message test :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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."; }
ce résultat dans le code source (de l'affichage de la page php) :Test <br>
é è à ç ù
(sans les espaces après le &)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <p>Texte brut : Test <br> é & #232; & #224; ç & #249; </p> <p>Texte filtre : Test é & #232; & #224; ç & #249; </p>
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
Partager