Condition pour un password

Eléphanteau du PHP | 31 Messages

02 juil. 2010, 02:18

Bonsoir,

Je suis actuellement entrain de créer un espace membre pour un de mes sites et la je me retrouve devant un dilemme !

J'aimerais en effet que lors de l'inscription ou de la mise à jours du profil, le champ mot de passe soit contrôlé avec les conditions suivantes :
- Doit avoir plus de 8 caractères et moins de 32
- Doit contenir que les lettres [A-Z], les chiffres ainsi que les caractères suivants : { $ . }

Merci d'avance !

ViPHP
AB
ViPHP | 5818 Messages

02 juil. 2010, 03:26

Pour contrôler la longueur d'une chaine il y a la fonction strlen et sa variante mb_strlen pour l'utf8.

Pour le reste c'est tout à fait faisable mais pourquoi limiter les caractères spéciaux ? Plus il y a de possibilités plus c'est sécurisé et puis il n'y a pas de raisons d'interdire les autres caractères, ils ne gênent en rien.

Mais bon si tu as une raison impérieuse tu trouveras de quoi le faire dans ce tuto

ViPHP
ViPHP | 5462 Messages

02 juil. 2010, 03:39

avec un regexp :wink:

sois
	
$str = 'tesdsxwcw$.sfsf'';
$reg = '/^[a-z\$\.]{8,32}$/';
	
preg_match($reg, $str, $matches);
	
if($matches)
{
    echo 'yep';
}
else
{
    echo 'nope';
}
ou plus officiel
	
$str = 'tes';
$reg = '/^[a-z\$\.]{8,32}$/';
	
$filter = filter_var($str, FILTER_VALIDATE_REGEXP, array('options' => array('regexp' => $reg)));
	
if($filter)
{
    echo 'yep';
}
else
{
    echo 'nope';
}

Eléphanteau du PHP | 31 Messages

02 juil. 2010, 04:49

Merci beaucoup pour votre aide c'est nikel ! :D

@AB: Je crois que je vais suivre ton conseille ! merci :)

ViPHP
AB
ViPHP | 5818 Messages

02 juil. 2010, 21:42

- Doit avoir plus de 8 caractères et moins de 32
- Doit contenir que les lettres [A-Z], les chiffres ainsi que les caractères suivants : { $ . }

Merci d'avance !
$str = 'tesdsxwcw$.sfsf'';
$reg = '/^[a-z\$\.]{8,32}$/';

preg_match($reg, $str, $matches);
Manque les nombres dans ton regex :wink:

ViPHP
ViPHP | 5462 Messages

03 juil. 2010, 12:36

- Doit avoir plus de 8 caractères et moins de 32
- Doit contenir que les lettres [A-Z], les chiffres ainsi que les caractères suivants : { $ . }

Merci d'avance !
$str = 'tesdsxwcw$.sfsf'';
$reg = '/^[a-z\$\.]{8,32}$/';

preg_match($reg, $str, $matches);
Manque les nombres dans ton regex :wink:
exact #-o

Code : Tout sélectionner

^[a-z0-9\$\.]{8,32}$

Eléphanteau du PHP | 31 Messages

04 juil. 2010, 02:38

Merci, j'ai suivi le tuto indiqué plus haut je maitrise mieux mais je suis quand même bloqué sur un point, comment faire pour obligé l'utilisateur qui s'inscrit à mettre au moin une lettre et un chiffre dans leur mot de passe ?

ViPHP
ViPHP | 5462 Messages

04 juil. 2010, 02:53

Merci, j'ai suivi le tuto indiqué plus haut je maitrise mieux mais je suis quand même bloqué sur un point, comment faire pour obligé l'utilisateur qui s'inscrit à mettre au moin une lettre et un chiffre dans leur mot de passe ?
plus compliqué, je dirais comme ca

Code : Tout sélectionner

^(?=[a-z0-9\$\.]*\d)(?=[a-z0-9\$\.]*[a-z])[a-z0-9\$\.]{8,32}$