萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php生成隨機密碼一些方法總結

php生成隨機密碼一些方法總結

當你想生成一個隨機的密碼的時候,你第一想到的可能是使用 uniquid() 函數,但是如果我們使用 array_rand() 和 range() ,可以更完美的實現這個功能。


方法一,

 代碼如下 復制代碼

<?php
header("Content-type: text/html; charset=utf-8");

function randCode($length) {
    $ranges = array(range('a', 'z'), range('A', 'Z'), range(1, 9));
    $code = '';
    for($i = 0; $i < $length; $i++){
        $rkey = array_rand($ranges);
        $vkey = array_rand($ranges[$rkey]);
        $code .= $ranges[$rkey][$vkey];
    }
    return $code;
}

echo "www.111cn.net";
echo randCode(5); // 輸出如:3IxY8、E6HOv、1qHiy等等
?>

方法二,

1、在 33 – 126 中生成一個隨機整數,如 35,

2、將 35 轉換成對應的ASCII碼字符,如 35 對應 #

3、重復以上 1、2 步驟 n 次,連接成 n 位的密碼

該算法主要用到了兩個函數,mt_rand ( int $min , int $max )函數用於生成隨機整數,其中 $min – $max 為 ASCII 碼的范圍,這裡取 33 -126 ,可以根據需要調整范圍,如ASCII碼表中 97 – 122 位對應 a – z 的英文字母,具體可參考 ASCII碼表; chr ( int $ascii )函數用於將對應整數 $ascii 轉換成對應的字符。

 代碼如下 復制代碼

function create_password($pw_length = 8)

{

$randpwd = '';

for ($i = 0; $i < $pw_length; $i++)

{

$randpwd .= chr(mt_rand(33, 126));

}

return $randpwd;

}

// 調用該函數,傳遞長度參數$pw_length = 6

echo create_password(6);

方法三,

 代碼如下 復制代碼

//自動為用戶隨機生成用戶名(長度6-13)

        function create_password($pw_length = 4){

            $randpwd = '';

            for ($i = 0; $i < $pw_length; $i++){

                $randpwd .= chr(mt_rand(33, 126));

            }

            return $randpwd;

        }

        function generate_username( $length = 6 ) {

            // 密碼字符集,可任意添加你需要的字符

            $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_ []{}<>~`+=,.;:/?|';

            $password = '';

            for ( $i = 0; $i < $length; $i++ )

            {

                // 這裡提供兩種字符獲取方式

                // 第一種是使用substr 截取$chars中的任意一位字符;

                // 第二種是取字符數組$chars 的任意元素

                // $password .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);

                $password .= $chars[ mt_rand(0, strlen($chars) - 1) ];

            }

            return $password;

        }

        // 調用該函數

        $userId = 'user'.generate_username(6);

        $pwd = create_password(9);

copyright © 萬盛學電腦網 all rights reserved