cs_Astalavista
Messages postés192Date d'inscriptionlundi 24 décembre 2001StatutMembreDerniè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és12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 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és255Date d'inscriptionvendredi 20 avril 2007StatutMembreDernière intervention 9 août 20134 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és2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 10 juil. 2008 à 12:57
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. "
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é...
25 juil. 2008 à 13:19
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 ...
20 juil. 2008 à 15:14
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...
10 juil. 2008 à 17:04
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 !
10 juil. 2008 à 12:57
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é...