Fonction de test mot de passe (regexp)
Posté : 16 juil. 2013, 10:19
Bonjour,
Je voudrais faire une fonction pour vérifier la nature d'un mot de passe selon plusieurs critères.
En fonction du niveau le mot de passe doit respecter certains critères :
Niveau 1 : Alpha obligatoire, Chiffres et majuscules (ou autres) optionnel - longueur mini : 5
Niveau 2 : Alpha obligatoire, Chiffres obligatoire, Majuscules (ou autres) optionnel - longueur mini : 7
Niveau 3 : Alpha obligatoire, Chiffres obligatoire, Majuscules obligatoire, autres optionnel - longueur mini : 7
Niveau 4 : Alpha obligatoire, Chiffres obligatoire, Majuscules obligatoire, Autres obligatoire (caractères spéciaux: +@_-:*=) - longueur mini : 8
Quand le caractère est obligatoire au moins 1 doit être présent.
Ma fonction :
Pour le niveau 4 je ne sais pas comment obliger les caractères spéciaux.
D'avance merci.
Je voudrais faire une fonction pour vérifier la nature d'un mot de passe selon plusieurs critères.
En fonction du niveau le mot de passe doit respecter certains critères :
Niveau 1 : Alpha obligatoire, Chiffres et majuscules (ou autres) optionnel - longueur mini : 5
Niveau 2 : Alpha obligatoire, Chiffres obligatoire, Majuscules (ou autres) optionnel - longueur mini : 7
Niveau 3 : Alpha obligatoire, Chiffres obligatoire, Majuscules obligatoire, autres optionnel - longueur mini : 7
Niveau 4 : Alpha obligatoire, Chiffres obligatoire, Majuscules obligatoire, Autres obligatoire (caractères spéciaux: +@_-:*=) - longueur mini : 8
Quand le caractère est obligatoire au moins 1 doit être présent.
Ma fonction :
function checkPassword($level,$password){
switch($level){
case 1:
if(preg_match_all("/((?:[a-z0-9A-Z])(?:[A-Z0-9])?.{5,255})/", $password, $matches)){
return true;
}else{
return false;
}
break;
case 2:
if(preg_match_all("/((?=.*\d)(?=.*[a-z])(?:[A-Z]+)?(?=.*[0-9]).{7,255})/", $password, $matches)){
return true;
}else{
return false;
}
break;
case 3:
if(preg_match_all("/((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).{7,255})/", $password, $matches)){
return true;
}else{
return false;
}
break;
case 4:
if(preg_match_all("/((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).{8,255})/", $password, $matches)){
return true;
}else{
return false;
}
break;
break;
default:
return false;
}
}
J'aurais besoin de votre avis pour savoir si ma fonction est correct. J'ai fais des test avec l'aide du site http://www.lumadis.be/regex/test_regex.phpPour le niveau 4 je ne sais pas comment obliger les caractères spéciaux.
D'avance merci.