Caractères spéciaux

Yuko -  
avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   -
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 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
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
Yuko
 
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 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
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