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
Freigeben: 2024-11-26 13:59:12
Original
999 Leute haben es durchsucht

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;
}
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

3. Deklarieren Sie $pass als Array: Dies verhindert, dass es als String initialisiert wird.

$pass = array(); //remember to declare $pass as an array
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage