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 :

pseudo ne doit pas commencer par un espace


Sujet :

Langage PHP

  1. #1
    Membre actif Avatar de elcoyotos
    Homme Profil pro
    Amateur passionné
    Inscrit en
    Octobre 2006
    Messages
    490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Amateur passionné

    Informations forums :
    Inscription : Octobre 2006
    Messages : 490
    Points : 294
    Points
    294
    Par défaut pseudo ne doit pas commencer par un espace
    Bonjour,

    J'ai le script suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    <?php
    if (isset($_POST['Submit'])) {
        // Si pseudo différent de Alpha num - _ ' @ . ? ! *    
        setlocale(LC_CTYPE, 'fr_FR', 'fr_FR.ISO-8859-1', 'french'/*, ... */);
        $nom = trim($_POST['pseudo']);
        if(!preg_match('`^([[:alnum:]-_*\'@.\s])+$`',$nom)) { 
            echo "ERREUR";
        }
        else {
            echo "OK";
        }
    }
    ?>
    <form id="form1" name="form1" method="post" action="pseudo.php">
      <input type="text" name="pseudo" />
      <input type="submit" name="Submit" value="Envoyer" />
    </form>
    Il fait exactement ce que je veux sauf une chose : Il accepte que le pseudo commence par un espace.

    Or, je ne veux pas que le pseudo puisse commencer par un espace.

    Je ne comprend pas car dans mon regex, je stipule bien que le pseudo doit commencer par un caractère alpha/num ????

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 228
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 228
    Points : 8 487
    Points
    8 487
    Billets dans le blog
    17
    Par défaut
    Je ne comprend pas car dans mon regex, je stipule bien que le pseudo doit commencer par un caractère alpha/num ????
    Ici `^([[:alnum:]-_*\'@.\s])+$`, à cause du premier couple de [ ], tu indiques que le pseudo peut contenir un peu de tout dans n'importe quel ordre.

    Pour forcer le pseudo à ne pas commencer par un blanc :


  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    pourquoi ne pas faire simplement un trim sur le pseudo ? parce que la c'est un peu bizarre : on peux avec juste _ en pseudo, ou alors * suivis de 15000 espaces, ou . suivis de 17 sauts de ligne

    y'a des erreurs dans ton partten aussi, ton * n'est pas échappé, le . non plus ton ' est échappé mais y'a pas besoin, et pas besion de faire de groupe non plus

    la syntaxe plus correct serait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^(?!\x20)[\w\*'@\.\x20-]+$

  4. #4
    Membre actif Avatar de elcoyotos
    Homme Profil pro
    Amateur passionné
    Inscrit en
    Octobre 2006
    Messages
    490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Amateur passionné

    Informations forums :
    Inscription : Octobre 2006
    Messages : 490
    Points : 294
    Points
    294
    Par défaut
    Tout d'abord, merci pour vos réponses.

    Séb --> je n'ai pas réussi à faire fonctionner ton exemple.

    stealth35 --> Merci pour ton regex qui semble me convenir

    ton ' est échappé mais y'a pas besoin
    Chez moi si

    y'a des erreurs dans ton partten aussi
    Pattern glané ici, sur ce forum ! (Je suis nul en regex)

    pourquoi ne pas faire simplement un trim sur le pseudo
    Mais avec ton regex, les espaces en début ou en fin de chaine ne sont plus autorisés. Je me trompe ?

    on peux avec juste _ en pseudo, ou alors * suivis de 15000 espaces, ou . suivis de 17 sauts de ligne
    C'est vrai qu'il est très permissif. Mais le pseudo choisi m'est égal.

    Dernière question quelqu'un pourrait-il me donner le pattern type d'un pseudo ?

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    faut savoir le nombre max de caratere que tu autorisés dans ta base (si y'en a une), ensuite les caractères accepté

  6. #6
    Membre actif Avatar de elcoyotos
    Homme Profil pro
    Amateur passionné
    Inscrit en
    Octobre 2006
    Messages
    490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Amateur passionné

    Informations forums :
    Inscription : Octobre 2006
    Messages : 490
    Points : 294
    Points
    294
    Par défaut
    25 caractères maxi
    Caractères acceptés : alpha/num + espace -_*'@. (insensible à la case)

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Citation Envoyé par elcoyotos Voir le message
    25 caractères maxi
    Caractères acceptés : alpha/num + espace -_*'@. (insensible à la case)
    donc t'es OK sur le fait que le puisse m'appeler ' avec 24 espaces ?
    le alpha/num c'est accents compris ?

  8. #8
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Par rapport à la question initiale : le pseudo était "trimmé" juste avant la regex.
    Les espaces de début et de fin étaient donc supprimés avant le test...
    La regex n'était pas en cause.

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/08/2009, 11h44
  2. Réponses: 0
    Dernier message: 02/09/2008, 12h14

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