8797 sujets

Développement web côté serveur, CMS

Bonjour,

je m'explique :

tout d'abord, j'ai reglé l'interclassement de ma base mysql à "utf8_unicode_ci". et que personne ne me dise pourquoi je l'ai fait lol Smiley biggrin .

ensuite, quand l'utilisateur ( le malin ) rempli un formulaire avec dedans des balise html, je procède comme suit :



$query = sprintf[#red]([/#]"LA REQUETTE et posted='%s'", m_r_e_s(htmlentities($_POST["posted"]))[#red])[/#];


avec m_r_e_s() = mysql_real_escape_string().

donc normalement cela doit remplacer les é par des é et les balises sont ignoré etc... puis je doit trouver dans la table de la bdd :

texte é &egrave
au lieu de
texte é è

MAIS moi je trouve : texte é è

je cherche une solution pour retrouver é dans la bdd ...
Modifié par M3hdi (18 Oct 2008 - 09:04)
Salut,

je ne vois aucun intérêt à sauvegarder tes données sous forme d'entités html. Smiley murf

A part bien sûr pour contourner une éventuelle incompréhension de comment fonctionne l'encodage auquel cas tu pourrais lire Notions de base sur l'encodage des caractères. Smiley cligne

Ce qui compte avant tout est le jeu de caractères (ou encodage ou charset) utilisé par mysql. On peut supposer qu'il s'agit d'utf-8...

L'interclassement (ou collation) ne sert qu'à préciser, en fonction du charset choisi, dans quel ordre seront triées les données et si certains caractères sont ou non équivalents ('a' = 'A' = 'à' = 'â'...)

Pour ce qui est des petits malins qui utilisent des balises html le problème éventuel ne va se poser qu'au moment de l'affichage des données et ce n'est qu'à ce moment là qu'il faudra utiliser htmlentities (ou plutôt htmlspecialchars) alors qu'au moment de l'enregistrement mysql_real_escape_string suffit amplement.

A+