PHP: Vérification de mot de passe
Fermé
frlobe
Messages postés
5
Date d'inscription
mercredi 31 mars 2010
Statut
Membre
Dernière intervention
4 juin 2010
-
3 avril 2010 à 08:24
Giorgiolino Messages postés 251 Date d'inscription vendredi 15 mai 2009 Statut Contributeur Dernière intervention 2 mars 2015 - 5 avril 2010 à 17:23
Giorgiolino Messages postés 251 Date d'inscription vendredi 15 mai 2009 Statut Contributeur Dernière intervention 2 mars 2015 - 5 avril 2010 à 17:23
A voir également:
- PHP: Vérification de mot de passe
- Mot de passe administrateur freebox ✓ - Forum Freebox
- Ce programme est écrit en python. il construit un mot secret dans une variable mais il ne l'affiche pas. modifiez-le pour qu'il affiche le mot secret. exécutez-le. quel est ce mot secret ? ✓ - Forum Python
- Piratage facebook changer mot de passe - Guide
- Supprimer mot de passe windows 10 - Guide
- Dans le texte, un seul mot a réellement été écrit en lettres capitales (majuscules). quel est ce mot ? ✓ - Forum Word
2 réponses
Giorgiolino
Messages postés
251
Date d'inscription
vendredi 15 mai 2009
Statut
Contributeur
Dernière intervention
2 mars 2015
52
Modifié par Giorgiolino le 5/04/2010 à 17:21
Modifié par Giorgiolino le 5/04/2010 à 17:21
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
frlobe
Messages postés
5
Date d'inscription
mercredi 31 mars 2010
Statut
Membre
Dernière intervention
4 juin 2010
4 avril 2010 à 05:24
4 avril 2010 à 05:24
Bonjour
et merci beaucoup pour cette réponse détaillée et précise. Je me mets de suite au code + je corrige le mien !
et merci beaucoup pour cette réponse détaillée et précise. Je me mets de suite au code + je corrige le mien !
Giorgiolino
Messages postés
251
Date d'inscription
vendredi 15 mai 2009
Statut
Contributeur
Dernière intervention
2 mars 2015
52
5 avril 2010 à 17:23
5 avril 2010 à 17:23
Tu t'en es peut-être aperçu mais il manquait une accolade fermante dans le premier IF.
//On vérifie d'abord la longueur du mot de passe
if(!preg_match("/^(.){4,8}$/",$motdepasse)) <-- ici