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 ?
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!