Mengapakah Penjana Kata Laluan Rawak PHP Saya Hanya Menghasilkan \'a\'s dan Array?

Linda Hamilton
Lepaskan: 2024-11-26 13:59:12
asal
937 orang telah melayarinya

Why Does My PHP Random Password Generator Only Produce

Menjana Rentetan Rawak untuk Kata Laluan dalam PHP

Masalah:

Apabila menjana kata laluan rawak dalam PHP menggunakan kod coretan di bawah, semua aksara ialah 'a' dan nilai pulangan ialah tatasusunan dan bukannya a rentetan.

function randomPassword() {
    $alphabet = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789";
    for ($i = 0; $i < 8; $i++) {
        $n = rand(0, count($alphabet)-1);
        $pass[$i] = $alphabet[$n];
    }
    return $pass;
}
Salin selepas log masuk

Penyelesaian:

1. Gunakan strlen dan bukannya count untuk mengira panjang abjad: count sentiasa mengembalikan 1 untuk rentetan, manakala strlen mengembalikan panjang sebenar.

$alphaLength = strlen($alphabet) - 1; //put the length -1 in cache
Salin selepas log masuk

2. Gunakan implode untuk menukar tatasusunan kepada rentetan: implode mengambil tatasusunan dan mencantumkan elemennya menjadi satu rentetan.

return implode($pass); //turn the array into a string
Salin selepas log masuk

3. Isytiharkan $pass sebagai tatasusunan: Ini menghalangnya daripada dimulakan sebagai rentetan.

$pass = array(); //remember to declare $pass as an array
Salin selepas log masuk

Amaran Keselamatan:

Perhatikan bahawa rand() ialah bukan penjana nombor pseudorandom yang selamat secara kriptografi. Pertimbangkan untuk menggunakan alternatif yang lebih selamat untuk menjana kata laluan atau tujuan kriptografi.

Atas ialah kandungan terperinci Mengapakah Penjana Kata Laluan Rawak PHP Saya Hanya Menghasilkan \'a\'s dan Array?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan