IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Formulaire en UTF-8


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Gérant
    Inscrit en
    Février 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Dom-Tom

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Février 2006
    Messages : 262
    Points : 329
    Points
    329
    Par défaut Formulaire en UTF-8
    Bonjour,

    Tout d'abord, l'ensemble du site à un charset en UTF-8, c'est de même pour la base de donnée.

    Toute les données du formulaire sont soumis à un filtre avant d'être envoyées vers la base de donnée.

    C'est à ce moment que je pêche !!!

    Pour être soumis au filtre, il faudrait que les lettres étrangères (arabe, asiatique etc.) soient redéfinies dans le format &#xxxx;

    Malheureusement, je n'arrive pas à faire cette transformation...

    Auriez vous une idée simple ?

    @ bientôt et merci...

  2. #2
    Membre du Club Avatar de Shin_RockmanX
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2003
    Messages : 78
    Points : 68
    Points
    68
    Par défaut
    Voici une petite fonction dénichée sur le site officiel de PHP.

    string utf8_encode ( string data )

    Ca devrait faire l'affaire.

  3. #3
    Membre averti
    Homme Profil pro
    Gérant
    Inscrit en
    Février 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Dom-Tom

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Février 2006
    Messages : 262
    Points : 329
    Points
    329
    Par défaut
    Bonjour,

    J'ai déjà pensé à cette fonction ainsi que le utf8_decode(), htmlentities() et html_entity_decode()

    Seulement à l'affichage, je voudrais avoir &#xxxx; hors j'ai des signes incomprehensible.

    Ce qui est bizarre, c'est que dans ma fonction regexp, cela fonctionne bien, il y a peut-être une interprétation qui se fait en arrière plan et qu'on ne peut afficher normalement...

    Merci @+

  4. #4
    Membre régulier
    Avatar de elitemedia
    Profil pro
    Inscrit en
    Août 2006
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 115
    Points : 120
    Points
    120
    Par défaut
    Tu ne peux pas modifier le filtre pour accepter les caractères tels quels directement ? C'est normalement un des points forts de l'utilisation d'UTF-8 non ?
    Votre nom de domaine dès 1,47€ ?
    www.avenuedot.com

  5. #5
    Membre averti
    Homme Profil pro
    Gérant
    Inscrit en
    Février 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Dom-Tom

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Février 2006
    Messages : 262
    Points : 329
    Points
    329
    Par défaut
    C'est l'une des questions que je me pose...

    Sachant que la composante de base du filtre utilise [:alnum:], je me demande si cette directive n'inclut pas déjà les lettres en UTF-8, mais je n'ai rien trouvé sur le net, mise à part que ça concerne les caractères alpha-numérique...

    Actuellement mon filtre accepte les caractères en UTF-8 tels quels, mais j'aimerais être sûr que ce n'est pas un bug.

    En tout cas je ne peux pas mettre dans le filtre l'ensemble des caractères mondiaux, ça serait trop lourd, donc si [:alnum:] inclut bien ses caractères, alors c'est tout bon :-)

    A bientôt...

  6. #6
    Membre régulier
    Avatar de elitemedia
    Profil pro
    Inscrit en
    Août 2006
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 115
    Points : 120
    Points
    120
    Par défaut
    Oui mais ce filtre c'est quoi exactement ? Une classe PHP ?
    Votre nom de domaine dès 1,47€ ?
    www.avenuedot.com

  7. #7
    Membre averti
    Homme Profil pro
    Gérant
    Inscrit en
    Février 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Dom-Tom

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Février 2006
    Messages : 262
    Points : 329
    Points
    329
    Par défaut
    Oui une petite fonction personnalisée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    eregi('^[[:alnum:]\&\#\;]{1,30}$', htmlentities($string));
    Par exemple pour le champ "username" mais acceptant tous les caractères (lettres) étrangers.

    A bientôt...

  8. #8
    Membre régulier
    Avatar de elitemedia
    Profil pro
    Inscrit en
    Août 2006
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 115
    Points : 120
    Points
    120
    Par défaut
    J'ai l'impression de ne pas saisir. Tu veux filtrer quoi exactement ?

    En fait l'utf-8 te permet justement de ne pas avoir à encoder tes caractères sous forme d'entités HTML &#... donc je n'ai pas l'impression que ton filtre ait un quelquonque interret.

    Ce qu'il faut faire si tu souhaites autoriser seulement certains caractères, alors défini un array des caractères autorisés, sans leur transformation en entité HTML on est bien d'accord, et ensuite tu compare ce que tu recois aux caractères autorisés du genre avec une expression régulière.

    un array du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array('@', 'è', 'é', 'à') etc...
    Peut etre que quelqu'un a une meilleure méthode, mais c'est comme ca que je ferai moi en tous cas.

    Au pire tu peux faire le contraire et définir un array de ce qui n'est pas autorisé. En tout cas en matière de filtrage, ce qui est interressant c'est surtout de filtrer du code HTML ou javascript afin d'éviter toute injection, mais dans ce cas la méthode est la même partout que ca soit UTF-8 ou un autre encodage.
    Votre nom de domaine dès 1,47€ ?
    www.avenuedot.com

  9. #9
    Membre averti
    Homme Profil pro
    Gérant
    Inscrit en
    Février 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Dom-Tom

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Février 2006
    Messages : 262
    Points : 329
    Points
    329
    Par défaut
    J'aurais fait aussi un arrray dans ce cas...

    Pour mieux expliquer :

    Lorsqu'un arabe écrit avec un clavier arabe (donc caractères arabes), je dois pouvoir filtrer le champs qu'il aura renseigné...

    Pour prendre un exemple simple, un champ textarea pour écrire un message, cet arabe écrit son message, donc tous les caractères sont en arabe.

    Le message (lettre espace lettre) est par exempe : س ز

    Si je veux supprimer la première lettre, je dois pouvoir la filter et donc d'abord la tranformer dans un format plus simple, à savoir pour ce cas. Hors je n'ai pas trouvé de solution simple qui me permet de faire cela.

    On pourrait par exemple appliquer cela sur un filtrage de mot interdit dans un message sur un forum ou d'autres exemple de ce type.

    Enfin voilà, si tu as la solution ou quelqu'un qui passe ici, je suis preneur.

    @ bientôt...

  10. #10
    Membre averti
    Homme Profil pro
    Gérant
    Inscrit en
    Février 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Dom-Tom

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Février 2006
    Messages : 262
    Points : 329
    Points
    329
    Par défaut
    Bonjour,

    J'ai trouvé ce qu'il me fallait, la solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mb_convert_encoding($string, "HTML-ENTITIES", "UTF-8")
    Explication :
    Chaque chaine en UTF-8 est convertit en caractères Unicode/html de forme &#xxxx; ou &xxxx;

    A bientôt...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Formulaire en utf-8 remplaces accents par des "?"
    Par seoguy dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 25/04/2013, 16h06
  2. formulaire et utf-8
    Par noobyyy dans le forum Langage
    Réponses: 10
    Dernier message: 07/02/2010, 20h23
  3. Encodage UTF-8 dans formulaire et preg_replace
    Par dawadam dans le forum Langage
    Réponses: 14
    Dernier message: 01/09/2009, 00h00
  4. [Formulaire] utf-8 encodage
    Par Luffy49 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 17/09/2008, 20h48
  5. [MySQL] Pb formulaire PHP et UTF-8
    Par fguigui dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 23/05/2006, 19h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo