Problem:
Beim Generieren eines zufälligen Passworts in PHP mithilfe des Codes Im folgenden Snippet sind alle Zeichen „a“ und der Rückgabewert ist ein Array anstelle von a Zeichenfolge.
function randomPassword() { $alphabet = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789"; for ($i = 0; $i < 8; $i++) { $n = rand(0, count($alphabet)-1); $pass[$i] = $alphabet[$n]; } return $pass; }
Lösung:
1. Verwenden Sie strlen anstelle von count, um die Länge des Alphabets zu berechnen: count gibt für eine Zeichenfolge immer 1 zurück, während strlen die tatsächliche Länge zurückgibt.
$alphaLength = strlen($alphabet) - 1; //put the length -1 in cache
2. Verwenden Sie implode, um das Array in einen String umzuwandeln: implode nimmt ein Array und fügt seine Elemente zu einem einzigen String zusammen.
return implode($pass); //turn the array into a string
3. Deklarieren Sie $pass als Array: Dies verhindert, dass es als String initialisiert wird.
$pass = array(); //remember to declare $pass as an array
Sicherheitswarnung:
Beachten Sie, dass rand() ist kein kryptografisch sicherer Pseudozufallszahlengenerator. Erwägen Sie die Verwendung sichererer Alternativen zum Generieren von Passwörtern oder für kryptografische Zwecke.
Das obige ist der detaillierte Inhalt vonWarum erzeugt mein PHP-Zufallskennwortgenerator nur „a's und ein Array?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!