Heim >Backend-Entwicklung >PHP-Tutorial >Warum erzeugt mein PHP-Zufallskennwortgenerator nur „a's und ein Array?

Warum erzeugt mein PHP-Zufallskennwortgenerator nur „a's und ein Array?

Linda Hamilton
Linda HamiltonOriginal
2024-11-26 13:59:121050Durchsuche

Why Does My PHP Random Password Generator Only Produce

Generieren einer zufälligen Zeichenfolge für ein Passwort in PHP

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn