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 :

Comment compliquer un mot de passe [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 166
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 166
    Par défaut Comment compliquer un mot de passe
    Bonjour à tous,

    je m'excuse mais je suis Nul en expression regulière.

    J'ai besoin de trouver une expression régulier qui va controller un mot de passe, qui doit
    1. avoir 6 caractere
    2. au moin une majuscule
    3. au moins un chiffre


    en bidoullant, j'ai trouve comment dire qu'il excpete les chiffres et les lettres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '/^[A-z0-9éàèäëïöüâêîôû \-]+$/'
    mais ci-dessu, ca ne va pas car je ne veux pas de caractere spéciaux comme les é, espace ou -, donc je la change ainsi
    La je peux avoir des majuscules, des minuscules et des chiffres.
    Cependant, l'exemple ci-dessus semble très basic, mais comment y mettre des conditions?
    Comme compter les caracteres, compter les chiffres etc.

    Je vous remercie pour votre aide

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 166
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 166
    Par défaut
    J'ai peu être posté ce post trop tot.

    J'ai trouvé ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $str = 'u3wdwwWew11';
    $ko = '/[^\da-xA-Z]/';
    $ok = '/^(?=.*\d)(?=.*[a-x])(?=.*[A-Z]).{6,10}$/';
    echo ( !preg_match($ko, $str, $m) and preg_match($ok, $str, $m) ) ? "OK":"KO";
    Mais j'aimerais bien comprendre comment il fait pour compte le nombre de majuscule et de chiffre?

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 166
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 166
    Par défaut
    J'aimerais maintenant faire plus simple et suprimer le nombre de caractere.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if($pass=='/^(?=.*\d)(?=.*[a-x])(?=.*[A-Z]).{6,10}$/'){
    echo 'OK';
    }
    J'ai changé comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if($pass=='/^(?=.*\d)(?=.*[a-x])(?=.*[A-Z])$/'){
    echo 'OK';
    }
    Simplement depuis que j'ai enlevé
    Ca bug.

    Commenet puis-je donc adapter pour qu'il controle
    1 majuscule et 1 chiffre au minimum?

  4. #4
    Membre éprouvé Avatar de denissay
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 103
    Par défaut
    C'est normal que ça ne fonctionne pas, les assertions ne consomment aucun carachtère, en effet, le pointeur de position reste au debut de la chaine ^ pendant la verification des assertions, puis juste après il trouve le symbole de fin de chaine, ce qui va donner un résultat négatif quelque soit ton input...

    Pour que cela focntionne, remplace tous simplement .{6,10} par .* ou .+ ce qui permettra de matcher tous ce qui a été validé par les assertions...

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 166
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 166
    Par défaut
    D'acord, merci beaucoup.

    Mais quel est la différence entre
    J'ai donc fait comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /^(?=.*\d)(?=.*[a-x])(?=.*[A-Z]).*$/

  6. #6
    Membre éprouvé Avatar de denissay
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 103
    Par défaut
    .* n'importe quel caractère 0 fois ou plus => [0, +oo[
    .+ n'importe quel caractère 1 fois ou plus => [1, +oo[

    Bon, dans ton cas, vu tes assertions, t'es sûr d'avoir au moins 3 caractères pour valider le regex, donc tu peux utiliser .{3,} ou simplement .+ ou .* , à toi de choisir

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

Discussions similaires

  1. comment crypter les mots de passe?
    Par JauB dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 23/11/2005, 16h37
  2. Réponses: 1
    Dernier message: 19/09/2005, 13h56
  3. Réponses: 5
    Dernier message: 17/12/2004, 09h25
  4. Comment cacher un mot de passe ?
    Par benxitd dans le forum Windows
    Réponses: 2
    Dernier message: 02/12/2004, 10h59
  5. Comment changer le mot de passe sous Interbase
    Par ETOKA dans le forum InterBase
    Réponses: 3
    Dernier message: 05/08/2004, 11h25

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