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 caractère spéciaux


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Points : 17
    Points
    17
    Par défaut formulaire caractère spéciaux
    Bonjour,

    j'ai un formulaire avec pseudo, mdp et url et j'aimerai savoir quels caractères pourraient posé de problèmes, j'ai déja pensé à <>& et \
    J'ai donc fait un preg_match('`([&<>\\\\]+)`', $chaine) afin d'indiqué une erreur lors de l'envoi de ces caractères.
    Du coup j'ai également une erreur d'indiqué avec ' et ", je ne comprends pas pourquoi, je ne les ai pas mis dans mon expression.
    Par contre ça m'a fait réfléchir et du coup il est vrai qu'ils peuvent également poser problème mais pourquoi ont-ils été pris en compte ?
    Et sinon quels autres caractères spéciaux pourraient poser problème ?
    Merci d'avance.

  2. #2
    Membre confirmé Avatar de guigo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 612
    Points : 576
    Points
    576
    Par défaut
    Peux tu préciser quelle problèmes les caractères spéciaux vont générer pour toi ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Points : 17
    Points
    17
    Par défaut
    S'ils mettent <script.... ou <img> ou autre ça risque de faire des problemes d'affichage....

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Points : 17
    Points
    17
    Par défaut
    Pour " et ' j'ai testé la variable et elle est \" et \'
    Les variables sont envoyé par des POST
    Donc en faite mon regex ne trouvait pas " ni ' c'est juste que le serveur rajoute \ devant....
    C'est un peu embétant ça

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Points : 17
    Points
    17
    Par défaut
    J'ai trouvé que c'est causé par magic_quotes d'activé.
    Je vais surement le désactivé car de toute façon dans toutes mes requetes sql j'ai deja addslashes.

    Bon sinon que pensez vous des caractères spéciaux a interdire ? < > \ ' " &
    c'est bien ?

  6. #6
    Membre actif Avatar de John Blobsmith
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 198
    Points : 223
    Points
    223
    Par défaut
    Ben tu peux utiliser strip_tags et mysql_real_escape_string...

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Points : 17
    Points
    17
    Par défaut
    Quel interet le strip_tags ?

  8. #8
    Membre actif Avatar de John Blobsmith
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 198
    Points : 223
    Points
    223
    Par défaut
    ca enlève toutes les balises html, ca limite la saisi.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Points : 17
    Points
    17
    Par défaut
    Ok mais tu veux que je m'en serve comment ? :p
    Pour limité la saisie il faut mieu un regex qui indique que la saisie est pas bonne...
    car avec le strip_tags on va supprimé une partie du login par exemple de la personne et pas lui dire....

  10. #10
    Membre actif Avatar de John Blobsmith
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 198
    Points : 223
    Points
    223
    Par défaut
    ok je vois ce que tu veux dire.
    Alors si les caractères spécifiques te posent problème prend le problème dans l'autre sens, autorise juste certains...
    comme [a-zA-Z0-9@$_-]
    Ca fonctionne bien sur un site non-international.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Points : 17
    Points
    17
    Par défaut
    Mais je souhaites juste interdire ceux qui peuvent poser problème.
    J'ai pensé à \ ' " & < et > et donc le but de mon post était de savoir si c'était jusdicieux ou s'il fallait en interdire d'autre
    et par exemple je peux laissé & pour le nom d'un site et le supprimé pour le login car c'est sutout la que je vois qu'il risque un probleme avec le parrainage par exemple.

  12. #12
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut Pour moi récement
    salut, en fait, les caractères que tu nous proposent ne posent pas de problème... Cela dépend juste de quelques paramètres :

    imaginons que tu veuille stocker tes données reçues d'un post dans une base de donnée, et que l'encodage de ton fichier soit utf-8

    utilise par exemple pour insérer tes données

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    addslashes ( preg_quote ( htmlentities ( $string,ENT_COMPAT,"UTF-8")))
    et pour les afficher sur ton site après
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    stripslashes( stripslashes( html_entity_decode ($string, ENT_QUOTES ,'UTF-8')));

    il y a cependant des caractères qui ne sont pas directement des caractères compatible si tu utilise de l'AJAX, donc un POST via xhr.send. A ce moment certains caractères doivent être remplacés coté javascript par leurs codes HTML : par exemple
    « en &/#/171; ( supprime les / , c pour que voie le code des caractères )
    dans ton script php qui récupère le post en AJAX il te suffit alors de décoder une première fois les caractères codé HTML en entité normale
    html_entity_decode ($string,ENT_COMPAT,"UTF-8");
    puis de les protéger pour la bdd
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    addslashes ( preg_quote ( htmlentities ( $string,ENT_COMPAT,"UTF-8")))

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Points : 17
    Points
    17
    Par défaut
    Pour le login ça peut posé problème le & car pour le parrainage si la personne prend comme login "afafe&var=5" s'il diffuse son lien de parrainage http://site.com/index.php?parrain=afafa&var=5 ça va pas lfaire
    S'il prend comme login <img> quand je vais affiché bonjour $login ça risque de faire une image :p

  14. #14
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut oui
    Bien en effet , à ce moment tu ne garde que les caractères alpha numérique sans accent par exemple là j'ai ajouté _ et - , ( en fait tu fait l'inverse , tu donne les caractères autorisé dans $search )

    sIn='lelogin';
    $search = array ('@[^a-zA-Z0-9_\-]@i');
    $replace = array ('');
    $sIn= preg_replace($search, $replace, $sIn );
    et sinon tu peu te diriger vers rawurlencode qui encodera les mauvais caractère pour l'url

Discussions similaires

  1. Formulaire - Caractères spéciaux
    Par Menontona dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 18/10/2012, 11h06
  2. [AJAX] Ajax + formulaires + caractères spéciaux
    Par Gabzor dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 23/05/2008, 11h29
  3. parametre de formulaire dont la valeur contient de caractères spéciaux
    Par jakouz dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 26/04/2006, 14h29
  4. Réponses: 10
    Dernier message: 31/03/2006, 20h46
  5. Réponses: 3
    Dernier message: 27/11/2004, 16h23

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