TESTEUR DE MOTS DE PASSE

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 - 10 juil. 2008 à 12:57
cs_Astalavista Messages postés 192 Date d'inscription lundi 24 décembre 2001 Statut Membre Dernière intervention 3 février 2010 - 25 juil. 2008 à 13:19
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/47280-testeur-de-mots-de-passe

cs_Astalavista Messages postés 192 Date d'inscription lundi 24 décembre 2001 Statut Membre Dernière intervention 3 février 2010
25 juil. 2008 à 13:19
Bonjour,
Tu aurais du faire une classe plutôt ...
Qui permettrais de tester un mot de passe comme ta source et (pourquoi pas) en générer un qui pour ton programme est complexe.

Les expressions régulière pourrais t'éviter les boucles...

Bonne continuation ...
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
20 juil. 2008 à 15:14
ta gestion des erreurs ('ynynn') est tres mauvaise : elle t'oblige a avoir plein de repetitions de codes...

le niveau expert n'est pas la hein... cette source n'a rien de bien compliquee

ton html n'est pas propre, et l'utilisation de print est mauvaise...
Morphinof Messages postés 255 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 9 août 2013 4
10 juil. 2008 à 17:04
Le niveau expert est surévalué mais c'est pas mal, en dehors de ce que disais très justement Neigedhiver j'aurais tendance à penser mais sa n'engage que moi, que ce genre de traitements sa sent le récursif à plein nez, bien que sa marche très bien sans hein ^^

De plus l'affichage du résultat est clairement trop redondant, tu devrai garder une structure de base et ne changer que le résultat, les deux choses qui changent étant le message et l'image à afficher tu pourrais aussi n'afficher qu'une fois ton tableau html en affichant la bonne image et le message que tu aura défini dans la fonction qui renvoi l'image et le message à afficher.

Une bonne idée à creuser un peu plus !
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
10 juil. 2008 à 12:57
Salut,

J'ai quelques petites critiques.

# for($i=0; $i<$longueur; $i++)
# {
# $lettre[$i] = substr($pass,$i,1);
# }

C'est inutile, puisque $pass[3] est égal à $lettre[3], valable pour toutes les lettres de la chaine de caractères.
Lire à ce sujet, la doc de PHP, chapitre sur les chaines de caractères : http://fr3.php.net/manual/fr/language.types.string.php#language.types.string.parsing
Je cite :
"Accès et modification d'une chaîne, par caractère

On peut accéder et modifier les caractères d'une chaîne de caractères en spécifiant sa position (à partir de 0) en utilisant la même syntaxe que pour les tableaux. Il convient de voir une chaîne de caractères comme un tableau dans ce cas. "

# if($lettre[$i] == 'a' || $lettre[$i] == 'z' || $lettre[$i] == 'e'

Je trouve cette ligne particulièrement... euh... laborieuse... Tous tes tests, d'une manière générale, sont laborieux.
Pour vérifier qu'une lettre est une minuscule, on peut simplement faire :

# if (strtolower($lettre) == $lettre)

Idem, pour une majuscule :

# if (strtoupper($lettre) == $lettre)

Pour vérifier qu'un caractère n'est ni une lettre (majuscule ou minuscule) ni un chiffre :

# if (preg_match('`[^a-z0-9]`i', $lettre))

La même expression régulière permet de vérifier qu'une chaine contient au moins un caractère non alphanumérique.

En gros, je pense qu'on peut faire à peu près la même chose avec une seule expression régulière bien pensée.

Sinon, tu as pensé à séparer le traitement du HTML, c'est très bien.
Par contre, dans l'affichage, il y a beaucoup, beaucoup trop de texte redondant : tu gagnerais à utiliser sprintf(). Mais je pense qu'une évaluation de la qualité du mot de passe chiffrée (une note, quoi) faciliterait les choses : au lieu de ta longue série de if et else if (d'ailleurs, utilise plutôt elseif qui est une seule instruction, plutôt que else if, qui est la succession de deux instructions), tu n'aurais que quelques tests.
Les conseils d'amélioration que ton script affiche, c'est une bonne idée sur le principe. Mais c'est, je pense, mal exploité.

L'idée en elle-même est sympa : on voit trop de sites qui n'accordent pas assez d'importance aux mots de passes (par exemple les sites bancaires qui demandent un code de 6 chiffres, qui sont dont craquables dans la journée) en exigeant des mots de passe de 10 caractères maximum, interdisant les caractères spéciaux, etc (ce qui doit provenir d'un manque de compétence à gérer les chaînes en fonction de l'encodage, utf-8, iso-8859-1, etc).
C'est un bon début, qui mérite des améliorations ;)

Pour finir, je pense que le niveau "expert" est un peu surévalué...
Rejoignez-nous