PHP: Vérification de mot de passe
frlobe
Messages postés
5
Statut
Membre
-
Giorgiolino Messages postés 270 Statut Contributeur -
Giorgiolino Messages postés 270 Statut Contributeur -
Bonjour
je souhaite vérifier que le mot de passe saisi lors d'une inscription contienne des chiffres ET des lettres. J'ai ce code, mais ça ne fonctionne pas comme je le veux ... Une idée ?
if(!preg_match(''^([[:alnum:]]{4,8})$'',$motdepasse))
{
$message .= "- Le mot de passe doit comporter des lettres et des chiffres.<br/>";
};
Merci de vos lumières
je souhaite vérifier que le mot de passe saisi lors d'une inscription contienne des chiffres ET des lettres. J'ai ce code, mais ça ne fonctionne pas comme je le veux ... Une idée ?
if(!preg_match(''^([[:alnum:]]{4,8})$'',$motdepasse))
{
$message .= "- Le mot de passe doit comporter des lettres et des chiffres.<br/>";
};
Merci de vos lumières
A voir également:
- PHP: Vérification de mot de passe
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour à la ligne php ✓ - Forum PHP
- Alert php - Forum PHP
- Retour a la ligne php ✓ - Forum PHP
2 réponses
Bonjour,
[:alnum:] n'est pas la bonne classe à utiliser car elle inclut les nombres ET les lettres. Or tu veux les distinguer.
Au lieu de ça, tu peux par exemple demander qu'il y ait un chiffre suivi d'une lettre ou l'inverse dans ton mot de passe; Et cela arrivera forcément si dans le mot de passe on exige qu'il y ait les deux.
On obtient donc ceci :
Exercice pour toi : Réécrire le code pour qu'il autorise les majuscules.
Ceci dit, attention à quelques coquilles qu'il y a dans ton code :
1/ Utilisations des simples quotes et des guillemets.
if(!preg_match(''^([[:alnum:]]{4,8})$'',$motdepasse))
Dans les 2 endroits, tu as mis 2 simples quotes (') au lieux de guillemets ("), ça ça ne marche pas.
2/ Caractères inutiles en fin de bloc
{
$message .= "- Le mot de passe doit comporter des lettres et des chiffres.<br/>";
}; <-- celui-ci
Le point-virgule (;)marque la fin d'une instruction.
ex. $message = "bonjour";
Les accolades ({ })délimitent un bloc d'instructions, soit éventuellement plusieurs instructions.
ex.
"La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information"
Albert Einstein
[:alnum:] n'est pas la bonne classe à utiliser car elle inclut les nombres ET les lettres. Or tu veux les distinguer.
Au lieu de ça, tu peux par exemple demander qu'il y ait un chiffre suivi d'une lettre ou l'inverse dans ton mot de passe; Et cela arrivera forcément si dans le mot de passe on exige qu'il y ait les deux.
On obtient donc ceci :
//On vérifie d'abord la longueur du mot de passe
if(!preg_match("/^(.){4,8}$/",$motdepasse)){
$message .= " -Le mot de passe doit comporter entre 4 et 8 caractères chiffres et lettres<br/>";
}
//On vérifie en suite qu'il y a des chiffres et des lettres
else if(!preg_match("/[a-z][0-9]|[a-z][0-9]/",$motdepasse))
{
$message .= " -Le mot de passe doit comporter des lettres et des chiffres.<br/>";
}
Exercice pour toi : Réécrire le code pour qu'il autorise les majuscules.
Ceci dit, attention à quelques coquilles qu'il y a dans ton code :
1/ Utilisations des simples quotes et des guillemets.
if(!preg_match(''^([[:alnum:]]{4,8})$'',$motdepasse))
Dans les 2 endroits, tu as mis 2 simples quotes (') au lieux de guillemets ("), ça ça ne marche pas.
2/ Caractères inutiles en fin de bloc
{
$message .= "- Le mot de passe doit comporter des lettres et des chiffres.<br/>";
}; <-- celui-ci
Le point-virgule (;)marque la fin d'une instruction.
ex. $message = "bonjour";
Les accolades ({ })délimitent un bloc d'instructions, soit éventuellement plusieurs instructions.
ex.
if ($faim == true) {
$action1 = "rentrer maison"; //instruction 1
$action2 = "preparer bon repas"; //instruction 2
$action3 = "manger sans les doigts"; //instruction 3
} //pas de point-virgule à la fin de ce bloc
"La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information"
Albert Einstein