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 253 Date d'inscription vendredi 15 mai 2009 Statut Contributeur Dernière intervention 2 mars 2015 - 5 avril 2010 à 17:23
Giorgiolino Messages postés 253 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
- Easy php - Télécharger - Divers Web & Internet
- Php?id=1 - Forum PHP
- \R php ✓ - Forum PHP
- Php if plusieurs conditions ✓ - Forum PHP
- Echo image php ✓ - Forum PHP
2 réponses
Giorgiolino
Messages postés
253
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
253
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