Maison  >  Article  >  développement back-end  >  Pourquoi mon générateur de mots de passe aléatoires PHP ne produit-il que des « a » et un tableau ?

Pourquoi mon générateur de mots de passe aléatoires PHP ne produit-il que des « a » et un tableau ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-26 13:59:12940parcourir

Why Does My PHP Random Password Generator Only Produce

Génération d'une chaîne aléatoire pour le mot de passe en PHP

Problème :

Lors de la génération d'un mot de passe aléatoire en PHP à l'aide du code extrait ci-dessous, tous les caractères sont des « a » et la valeur de retour est un tableau au lieu d'un chaîne.

function randomPassword() {
    $alphabet = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789";
    for ($i = 0; $i < 8; $i++) {
        $n = rand(0, count($alphabet)-1);
        $pass[$i] = $alphabet[$n];
    }
    return $pass;
}

Solution :

1. Utilisez strlen au lieu de count pour calculer la longueur de l'alphabet : count renvoie toujours 1 pour une chaîne, tandis que strlen renvoie la longueur réelle.

$alphaLength = strlen($alphabet) - 1; //put the length -1 in cache

2. Utilisez implode pour convertir le tableau en chaîne : implode prend un tableau et joint ses éléments en une seule chaîne.

return implode($pass); //turn the array into a string

3. Déclarez $pass sous forme de tableau : Cela l'empêche d'être initialisé sous forme de chaîne.

$pass = array(); //remember to declare $pass as an array

Avertissement de sécurité :

Notez que rand() est pas un générateur de nombres pseudo-aléatoires cryptographiquement sécurisé. Pensez à utiliser des alternatives plus sécurisées pour générer des mots de passe ou à des fins cryptographiques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn