Position actuelle: Accueil> Derniers articles> Utilisez STR_SPLIT pour réaliser la détection de force du mot de passe

Utilisez STR_SPLIT pour réaliser la détection de force du mot de passe

M66 2025-05-28

La fonction STR_SPLIT dans PHP divise une chaîne dans un tableau, chaque élément de tableau contient un caractère dans la chaîne. La syntaxe de base est la suivante:

 str_split(string $string, int $length = 1): array
  • $ String : la chaîne à diviser.

  • $ Longueur : la longueur de chaque élément de tableau, par défaut à 1.

Par exemple, appeler str_split ("abcdef") renverra ['a', 'b', 'c', 'd', 'e', ​​'f'] .

2. Règles de détection de force de mot de passe

Afin de déterminer la force d'un mot de passe, nous considérons généralement les aspects suivants:

  • Longueur : La longueur du mot de passe doit être suffisamment longue, généralement au moins 8 caractères sont nécessaires.

  • Inclure les numéros : le mot de passe doit contenir des nombres.

  • Inclure des lettres majuscules : le mot de passe doit contenir au moins une lettre majuscule.

  • Inclure les lettres minuscules : le mot de passe doit contenir au moins une lettre minuscule.

  • Contient des caractères spéciaux : le mot de passe doit contenir au moins un caractère spécial, tel que @ , # , $ , etc.

3. Utilisez la fonction STR_SPLIT pour la détection de mot de passe

Nous pouvons utiliser STR_SPLIT pour diviser le mot de passe en un tableau et vérifier chaque caractère dans le tableau pour déterminer si le mot de passe répond aux exigences de force ci-dessus. Voici un exemple simple de code:

 <?php

function check_password_strength($password) {
    // Vérifier la durée du mot de passe
    if (strlen($password) < 8) {
        return "La longueur du mot de passe est au moins 8 Personnages";
    }

    // utiliser str_split Diviser les mots de passe sous forme de tableaux
    $password_array = str_split($password);

    // Initialiser les drapeaux
    $has_upper = false;
    $has_lower = false;
    $has_digit = false;
    $has_special = false;

    // Itérer dans le tableau,检查每Personnages
    foreach ($password_array as $char) {
        if (ctype_upper($char)) {
            $has_upper = true;
        } elseif (ctype_lower($char)) {
            $has_lower = true;
        } elseif (is_numeric($char)) {
            $has_digit = true;
        } elseif (preg_match('/[!@#$%^&*(),.?":{}|<>]/', $char)) {
            $has_special = true;
        }
    }

    // Vérifiez si toutes les conditions sont remplies
    if (!$has_upper) {
        return "les mots de passe doivent contenir au moins une majuscule";
    }
    if (!$has_lower) {
        return "Le mot de passe doit contenir au moins une lettre minuscule";
    }
    if (!$has_digit) {
        return "Le mot de passe doit contenir au moins un numéro";
    }
    if (!$has_special) {
        return "Le mot de passe doit contenir au moins un caractère spécial";
    }

    return "Force de mot de passe";
}

// Test d&#39;échantillonnage
$password = "P@ssw0rd";
echo check_password_strength($password); // Sortir:Force de mot de passe

?>

4. Analyse de code

  • str_split ($ mot de passe) : divisez la chaîne de mot de passe en un tableau pour faciliter la vérification des caractères.

  • CTYPE_UPPER ($ char) : Vérifiez si le personnage est majuscule.

  • CTYPE_LOWER ($ CHAR) : Vérifiez si le personnage est minuscule.

  • is_numeric ($ char) : vérifiez si le caractère est un nombre.

  • preg_match ('/ [! @ # $% ^ & * (),.? ": {} | <>] /', $ char) : Vérifiez si le personnage est un caractère spécial.

5. Améliorer davantage la sécurité du mot de passe

Bien que les règles de détection mentionnées ci-dessus puissent améliorer efficacement la sécurité des mots de passe, nous pouvons encore améliorer davantage la rigueur de la détection des mots de passe. Considérer:

  • Les mots de passe restreints ne peuvent pas contenir d'informations courantes sur les utilisateurs (tels que le nom d'utilisateur, le courrier électronique, l'anniversaire, etc.).

  • Cryptez les mots de passe utilisant des algorithmes de hachage tels que SHA-256 ou BCrypt pour s'assurer qu'ils ne peuvent pas être directement craqués même si le mot de passe est divulgué.