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 :

pseudos et email [RegEx]


Sujet :

Langage PHP

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Points : 219
    Points
    219
    Par défaut pseudos et email
    bonjour, sur mon site j'aimerai faire une restriction de caractère sur plusieurs champs lors de la modification d'un formulaire ou l'inscription d'un membre.

    je cherche un regex très récent pouvant accepter les adresses email:
    est-ce que le miens est bien ? ou on peut l'améliorer ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,4}$

    je cherche également à protéger les pseudos comment autorisé:
    > alphabet (minuscule)
    > chiffre
    > caractère: . - ' _

    interdire que c'est 4 caractères commence et termine et apparaisse une fois chacun dans le pseudo maximum.

    est-ce que l'apostrophe est-il dangereux de l'accepter ?
    exemple si un membre veut se nommer l'artiste.

    je ne suis pas très fort j'ai un début comme ceci:

    merci de votre aide.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 73
    Points : 55
    Points
    55
    Par défaut
    Bonjour,

    Pour le mail, je ferais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$
    J'échappe le . par un \

    Et pour le login, je ferais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^[a-z0-9]+['_-]?[a-z0-9]+$
    Ca commence par, au minimum une lettre ou un chiffre, ca peut comporter optionnellement un caractère -'_ et ca termine par au minimum une lettre ou un chiffre.

    Dis moi si cela fonctionne.

  3. #3
    Débutant
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Points : 219
    Points
    219
    Par défaut
    Merci de ton aide alors j'ai testé plusieurs pseudo et voici les erreurs trouvé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    /*
    ERREURS PSEUDO:
     
    l'artiste_du13
    jean-claude_56
     
    */
    en gros il faudrait accepter 1 caractère mais ne pas faire une restriction sur les autres.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 73
    Points : 55
    Points
    55
    Par défaut
    Je n'ai pas trop compris.

    Tu voudrais accepter les pseudos qui n'ont qu'un seul caractère de ponctuation ou bien ceux qui ont plusieurs caractères de ponctuation, ces derniers n'apparaissant qu'au maximum une fois dans le pseudo.

    Par exemple:
    correcte: l'artiste_du13
    incorrect: l'artiste_du_13 (car deux fois _ )

  5. #5
    Débutant
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Points : 219
    Points
    219
    Par défaut
    REGEX LOGIN ACTUEL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #^[a-z0-9]+[.'_-]?[a-z0-9]+$#i
    Résutat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    /*
     
    Ces pseudos ne peuvent pas être insérés et j'aimerai le faire.
     
    l'artiste_du13
    jean-claude_56
     
    */
    En faite [.-_'] peuvent apparaitre une fois dans le pseudo sauf au début et à la fin. Mais le problème actuel c'est que si je met un . (point) je ne peux plus mettre de - (tiret). comment faire ?

    et si dans le cas ou je veux faire apparaitre dans le pseudo au maximum 3 . (point) je fais comme sa .{3} ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 73
    Points : 55
    Points
    55
    Par défaut
    Essaies un truc comme ça, en plus ca permettra d'eviter les multiples ponctuations à la suite du genre : l'_.artiste--56

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #^[a-z0-9]+([.'_-]?[a-z0-9]+[.'_!]?){1,}[a-z0-9]$#
    Je comprend pas pourquoi tu mais i à la fin, c'est pour ignorer la casse, alors que tu m'as dit que tu voulais que des miniscules.

    Pour trois points max ce serait
    Mais je n'ai trouvé pour le mettre dans le motif, je vais voir ca.

  7. #7
    Débutant
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Points : 219
    Points
    219
    Par défaut
    Pour le #i j'ai oublié de l'enlever j'avais fait un copier / coller sur ma page pour remplacer mon regex.

    sinon je ne comprends pas pourquoi tu as mis un ! (point d'exclamation) dans le regex ? tu veux l'autorisé ?

    Mon objectif final:
    ===============
    • Le pseudo ne doit pas commencer et terminer par un caractère: . - ' _ (ok)
    • Les caractères: . - ' _ ne peuvent pas s'afficher plus de 3 fois dans un pseudo, d'où ma question sur le point 3 fois (?)
    • Les espaces du genre "jean marc" ne peuvent pas fonctionner (ok)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //avant:
    #^[a-z0-9]+   ([.'_-]?[a-z0-9]+[.'_!]?){1,}   [a-z0-9]$#
     
    //après comment ceci ?
    #^[a-z0-9]+   ([.'_-]?[a-z0-9]+[.'_-]?){0,3}   [a-z0-9]$#
    edit:

    mince ! j'ai oublié de mettre les caractères suivant dans le pseudo:

    éèêëàâùüîïôö

    si un membre s'appelle: émilie elle pourra pas

    il y a pas un moyen d'avoir toutes les voyelles accentuées ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #^[a-zéèêëàâùüîïôö0-9]+([.'_-]?[a-zéèêëàâùüîïôö0-9]+[.'_-]?){0,3}[a-zéèêëàâùüîïôö0-9]$#

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 73
    Points : 55
    Points
    55
    Par défaut
    Tu as raison, je pense. Ca dépend de ton serveur je crois (mais je n'en sais rien, à tester donc).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #^[a-zéèêëàâùüîïôö0-9]+([.'_-]?[a-zéèêëàâùüîïôö0-9]){0,3}[a-zéèêëàâùüîïôö0-9]$#
    Ca doit le faire ainsi.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    Pour la validation d'e-mail, la regex utilisée par Mail de PEAR est pas mal.

    Voici la version "RFC 822" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '/^([*+!.&#$|\'\\%\/0-9a-z^_`{}=?~:-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,})$/i'

  10. #10
    Débutant
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Points : 219
    Points
    219
    Par défaut
    utiliser la dernière version de PEAR est une référence ?

    sinon merci pour vos réponses.

  11. #11
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    se soucier du charset peut etre une piste ...

    ton fichier est il en utf8 ???
    rajoute le modifer u
    ???
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  12. #12
    Débutant
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Points : 219
    Points
    219
    Par défaut
    php 5.3

    oui en UTF-8

    comment ça modifier u ?

  13. #13
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    /i pour case insensitive
    /u pour utf-8

    en cumulant
    /iu
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  14. #14
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Citation Envoyé par noobyyy Voir le message
    utiliser la dernière version de PEAR est une référence ?

    sinon merci pour vos réponses.
    Cette regexp PEAR ne correspond pas à toutes les adresses possibles, bien qu'elle soit sûrement moins mauvaise que certaines autres qui circulent sur le web et qui sont encore plus restrictives.
    La référence supposée valider toute adresse RFC822 serait plutôt celle-là:
    http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html
    mais c'est plus pour information que pour l'utiliser, car elle fait peur à voir.
    Le problème est que la plupart des personnes ayant fait des regexp pour les adresses mail n'ont jamais lu la RFC, ils la font "au feeling".
    De toute façon la seule solution efficace pour tester une adresse est d'y envoyer un mail et de s'assurer qu'il a été lu.

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

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