Maison > développement back-end > tutoriel php > 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
Libérer: 2024-11-26 13:59:12
original
1070 Les gens l'ont consulté

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;
}
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal