Fonction de test mot de passe (regexp)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Fonction de test mot de passe (regexp)

Fonction de test mot de passe (regexp)

par bunk » 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 :
	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.php
Pour le niveau 4 je ne sais pas comment obliger les caractères spéciaux.

D'avance merci.