Bonjour,

La fonction suivante est destinée à contrôler la conformité d'un mot de passe:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function ctl_password($pw, $min=0, $max=0, $types='') {
	// $types est un code qui doit contenir exclusivement les caractères :
	// a pour contraindre la présence de minuscules,
	// A pour contraindre la présence de majuscules,
	// 0 pour contraindre la présence d'un chiffre,
	// ! pour contraindre la présence d'un caractère spécial
 
	// Forçage de valeurs pour test
	$pw = 'abcdef';
	$min = 4;
	$max = 8;
	$types='!'; // Ne fonctionne pas
	$types='0'; // Ne fonctionne pas
 
	// Contrôle de longueur
	if ( $min !=0 ) { if ( strlen($pw) <$min ) return false; }
	if ( $max !=0 ) { if ( strlen($pw) >$max ) return false; }
	// Contrôle du type de caractères
	if ( $types ) {
		if ( strpos($types, '!') !== false and !mb_ereg_match("#\W#", $pw) ) { echo 'false1', '<br/>'; return false; } // Ne fonctionne pas
		if ( strpos($types, 'a') !== false and !preg_match("#[a-z]#", $pw) ) { echo 'false2', '<br/>'; return false; } // OK
		if ( strpos($types, 'A') !== false and !preg_match("#[A-Z]#", $pw) ) { echo 'false3', '<br/>'; return false; } // OK
		if ( strpos($types, '0') !== false and !preg_match("#[0-9]#", $pw) ) { echo 'false4', '<br/>'; return false; } // Ne fonctionne pas
	}
	return true;
}
Question 1: Je pense que la fonction peut être améliorée
Question 2: Les contrôles de caractères spéciaux et de caractères numériques ne fonctionnent pas. Pourquoi?