Caractères spéciaux

Fermé
Yuko - Modifié par Yuko le 19/08/2010 à 01:54
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 - 19 août 2010 à 23:12
Bonjour, j'ai un problème ^^ Sur mon site, un membre s'est inscrit avec un pseudo contenant le caractère très spécial ? (coeur (alt+3)). Le soucis, c'est que ce caractère provoque pléthore d'erreur SQL, autant au niveau de la connexion (le pseudo entré n'est plus reconnu qu'au niveau du profil (le pseudo est transmis via une variable $_GET) =(
J'ai bien essayé l'encodage du champ de la table en UTF-8, l'échappement htmlspecialchars/htmlentities, mais rien n'y fait...le problème persiste :(
Pourriez-vous m'aider?
Un grand merci à celui ou celle qui saura m'apporter une réponse =)

3 réponses

avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 501
Modifié par avion-f16 le 19/08/2010 à 14:51
Salut.

Il ne suffit pas de changer l'encodage du champ SQL, il faut aussi :
- Changer le jeu de caractères (charset pour faire plus court) de ton fichier
- Indiquer le charset dans une meta, dans les entêtes HTTP (.htaccess ou PHP), ou modifier le charset par défaut du serveur.

Si tu veux limiter les caractères autorisés, tu peux utiliser les regex.
Ton ordinateur ne fait pas ce que tu veux ... mais ce que tu lui dis de faire.
0
Bonjour ^^ Merci beaucoup de votre réponse. Seulement, je ne crois pas qu'il s'agisse du charset de la page en elle-même, puisque le caractère s'affiche normalement :/
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 501
19 août 2010 à 23:12
htmlspecialchars et htmlentities servent à empêcher la faille XSS qui consiste à injecter du code HTML (et donc aussi JS) dans les chaines. Perso, j'utilise une des deux lors de l'affichage, pas à l'enregistrement.

Pour l'enregistrement, c'est mysql_real_escape_string.
0