Expression régulière et mot de passe

Eléphanteau du PHP | 42 Messages

28 nov. 2008, 16:16

Bonjour

Je cherche à déterminer le niveau de sécurité d'un mot de passe et je dois donc vérifier que mon mot de passe.
Je souhaiterais que mon mot de passe soit de longueur min 8, comporte au moins une majuscule, une minuscule et un caractère spécial.

Pour l'instant j'ai ça :
if (preg_match("([\w@^$/*-_]{8,10})",$passe))
{
return true;
}

Cependant l'analyse ne se fait pas sur tous les caractères, \w vérifie si au miins une fois il y a un de ces caractères mais pour tous les caractères.

Merci de votre aide
Fabien JEANNEAU

ViPHP
ViPHP | 3607 Messages

28 nov. 2008, 16:33

Bonjour,
Moi je verrais bien un truc comme ça:
<?php
$mdp='abcDe@ie';
$secu=0;

if(preg_match('#[a-z]+#',$mdp)){
    $secu++;
}
if(preg_match('#[A-Z]+#',$mdp)){
    $secu++;
}
if(preg_match('#[^a-zA-Z0-9\s]+#',$mdp)){
    $secu++;
}
if(strlen($mdp)>7){
    $secu++;
}

//et là en fonction de la valeur de secu, tu peux dire si le mot de passe est nul, moyen ou dur...
?>

Eléphanteau du PHP | 42 Messages

28 nov. 2008, 17:24

Merci je vais tester ça !
Que veux dire # dans ton expression régulière ?

ViPHP
ViPHP | 3607 Messages

28 nov. 2008, 17:28

la même chose que ( dans la tienne ;)
C'est les délimiteurs qui sont plus ou moins au choix!

Eléphanteau du PHP | 42 Messages

28 nov. 2008, 17:41

MErci, encore une petite explication

Que veux-dire ?

'#[^a-zA-Z0-9\s]+#'

J'aurai compris : qui ne contient pas un alphanumérique ?

Fabien

ViPHP
ViPHP | 3607 Messages

28 nov. 2008, 17:46

Oui c'est à peu près, note que je ne l'ai pas testée, c'est pour dire pas d'alphanumérique et pas d'espace, mais je ne sais plus si [[:alpha:]] prend en compte tout ça...

Eléphanteau du PHP | 42 Messages

28 nov. 2008, 19:46

Merci pour tout !