Soyez le premier à donner votre avis sur cette source.
Snippet vu 6 916 fois - Téléchargée 19 fois
function ControlComplexity($password) { $Password = (string) $Password; // Si la chaîne $Password est inférieur à 7 on retourne FALSE if (strlen($Password) < 7) return FALSE; // On supprime les accents de la chaîne $Password $Password = strtr($Password, 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ', 'AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn'); // On initialise le compteur catégorie de caractères $iReturn = 0; // Détection minuscules if (preg_match('`:lower:`', $Password) === 1) $iReturn++; // Détection majuscules if (preg_match('`:upper:`', $Password) === 1) $iReturn++; // Détection chiffres if (preg_match('`:digit:`', $Password) === 1) $iReturn++; // Détection caractères spéciaux if (preg_match('`[^a-zA-Z0-9]`', $Password) === 1) $iReturn++; if ($iReturn < 3) return FALSE; else return TRUE; }
5 août 2008 à 00:27
5 août 2008 à 00:17
une petite question : intérêt de l'instruction : $Password = (string) $Password; ?
4 août 2008 à 23:14
coucou747, ta remarque est pertinente mais je me suis placé dans le contexte de la stratégie de mot de passe d'Active Directory qui est d'origine américaine. Cette stratégie ne tient pas compte des accents si chers à nous français. Donc Password ou Pàssword est pour eux le même mot de passe. Il ne reste donc que 4 catégories, le mot de passe devant utiliser a minima 3 catégories sur 4.
4 août 2008 à 13:15
la, si tu regardes bien ta variable $count, tu peux avoir : _A5 et pour toi, ca sera un password fort...
un password est fort si il est :
- sans cycles
- avec un jeu de caractere etendus (accents, caracteres speciaux, majuscule, minuscule, chiffres)
- long
- n'est pas dans un dictionnaier (c'est plus dur a regarder.)
sur cette source : http://www.javascriptfr.com/codes/PASSWORD_32047.aspx je n'ai pas verifie si le jeux de caractere utilise etait etendu, mais c'est deja un bon debut.
4 août 2008 à 11:28
Pourquoi utiliser une boucle alors que c'est inutile ? Tu passes la fonction "preg_match" sur ta chaîne et le tour est joué =)
<?php
function ControlComplexity($sPassword) {
$sPassword = (string) $sPassword;
// Si la chaîne $sPassword est inférieur à 7 on retourne FALSE.
if (strlen($sPassword) < 7) return FALSE;
// On supprime les accents de la chaîne $sPassword.
$sPassword = strtr($sPassword, 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ', 'AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn');
// On initialise le compteur $iReturn.
$iReturn = 0;
// On exécute nos tests.
if (preg_match('`[[:lower:]]`', $sPassword) === 1) $iReturn++;
if (preg_match('`[[:upper:]]`', $sPassword) === 1) $iReturn++;
if (preg_match('`[[:digit:]]`', $sPassword) === 1) $iReturn++;
if (preg_match('`[^a-zA-Z0-9]`', $sPassword) === 1) $iReturn++;
if ($iReturn < 2) return FALSE;
return TRUE;
}
?>
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.