[AJAX] Caractères spéciaux et enregistrement dans base SQL
Bonjour.
Je cherche à enregistrer une chaine de caractères contenue dans un DIV contenteditable dans une base SQL. Cela fonctionne correctement sauf quand cette chaine comporte les caractères ">", "<" et "&".
Voici une portion de mon code html :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| <!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
etc...
</head>
<body>
<input type="image" onclick="save();" src="./image/save.png" />
<div id="texte" contentEditable ></div>
etc...
</body>
</html> |
Voici mon code JAVASCRIPT qui correspond à la fonction "save();" :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| // reponse XHR et affichage du contenu du Div
function traitementSave() {
if(objetXHR50.readyState==4) {
if(objetXHR50.status==200) {
alert ("Sauvegarde OK");
}
}
}
// lien avec le fichier PHP
function save() {
var texte = document.getElementById("texte").innerHTML;
var parametres = "texte="+texte;
objetXHR50 = creationXHR();
objetXHR50.onreadystatechange = traitementSave;
objetXHR50.open("post","./save.php",true);
objetXHR50.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
objetXHR50.send(parametres);
} |
Voici une portion de mon code PHP :
Code:
1 2
| $texte = $_POST['texte'];
mysql_query (" INSERT INTO maTable (texte) VALUES ('$texte') "); |
Donc, comme je le disais, si je saisie "Tout va bien dans le meilleur des mondes !", l'enregistrement s'effectue correctement dans ma base de donnée.
Si je saisie "Le chiffre 7 > 3", l'enregistrement retourné est "Le chiffre 7".
Pour mon code PHP, j'ai essayé ceci :
Code:
1 2
| $texte = htmlspecialchars($_POST['texte']);
mysql_query (" INSERT INTO maTable (texte) VALUES ('$texte') "); |
Mais malheureusement, l'enregistrement dans la base est bloqué au caractère ">".
Dernières précisions :
- Grâce à la commande "execCommande", j'insère du style dans mon DIV (exemple : <span style="font-weight: bold;">mon texte</span>) et ça fonctionne.
- J'ai essayé de créer un bouton permettant d'insérer le code ASCII ou le code HTML du caractère "&" et ainsi obtenir (exemple : mon texte & un autre texte) ou (exemple : mon texte & un autre texte)
Ceci n'a pas réglé mon problème...
Quelqu'un peut-il m'aider svp ?