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.