Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah Penjana Kata Laluan Rawak PHP Saya Hanya Menghasilkan \'a\'s dan Array?

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

Linda Hamilton
Linda Hamiltonasal
2024-11-26 13:59:12939semak imbas

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;
}

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

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

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

$pass = array(); //remember to declare $pass as an array

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!

Kenyataan:
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