首頁 > 後端開發 > php教程 > 為什麼我的 PHP 隨機密碼產生器只會產生「a」和一個陣列?

為什麼我的 PHP 隨機密碼產生器只會產生「a」和一個陣列?

Linda Hamilton
發布: 2024-11-26 13:59:12
原創
1020 人瀏覽過

Why Does My PHP Random Password Generator Only Produce

在PHP 中產生隨機密碼字串

問題:

使用程式碼在PHP 中產生隨機密碼時下面的程式碼片段,所有字元都是'a',回傳值是一個陣列而不是a字串。

function randomPassword() {
    $alphabet = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789";
    for ($i = 0; $i < 8; $i++) {
        $n = rand(0, count($alphabet)-1);
        $pass[$i] = $alphabet[$n];
    }
    return $pass;
}
登入後複製

解:

1.使用strlen 而不是count 來計算字母表的長度: 對於字串,count 總是返回1,而strlen 返回實際長度。

$alphaLength = strlen($alphabet) - 1; //put the length -1 in cache
登入後複製

2。使用 implode 將陣列轉換為字串: implode 接受一個陣列並將其元素連接成一個字串。

return implode($pass); //turn the array into a string
登入後複製

3.將 $pass 宣告為陣列: 這會阻止它被初始化為字串。

$pass = array(); //remember to declare $pass as an array
登入後複製

安全警告:

請注意 rand() 是不是加密安全的偽隨機數產生器。考慮使用更安全的替代方案來產生密碼或加密目的。

以上是為什麼我的 PHP 隨機密碼產生器只會產生「a」和一個陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板