Page 1 sur 1

Expression régulière et mot de passe

Posté : 28 nov. 2008, 16:16
par Jeaf16
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

Posté : 28 nov. 2008, 16:33
par jojolapine
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...
?>

Posté : 28 nov. 2008, 17:24
par Jeaf16
Merci je vais tester ça !
Que veux dire # dans ton expression régulière ?

Posté : 28 nov. 2008, 17:28
par jojolapine
la même chose que ( dans la tienne ;)
C'est les délimiteurs qui sont plus ou moins au choix!

Posté : 28 nov. 2008, 17:41
par Jeaf16
MErci, encore une petite explication

Que veux-dire ?

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

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

Fabien

Posté : 28 nov. 2008, 17:46
par jojolapine
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...

Posté : 28 nov. 2008, 19:46
par Jeaf16
Merci pour tout !