如果要做到安全密碼與使用者名稱都隨機我有一個朋友做伺服器的登入密碼與使用者名稱就是使用了phpmyadmin隨機產生密碼功能來做的,與其用phpmyadmin不如自己做了,下文整理了一些關於php隨機密碼產生的自訂函數供大家參考.
可以指定產生的字串長度,代碼如下:
function rand_str($length, $max=FALSE) { if (is_int($max) && $max > $length) { $length = mt_rand($length, $max); } $output = ''; for ($i=0; $i<$length; $i++) { $which = mt_rand(0,2); if ($which === 0) { $output .= mt_rand(0,9); } elseif ($which === 1) { $output .= chr(mt_rand(65,90)); } else { $output .= chr(mt_rand(97,122)); } } return $output; }
調用執行個體:$randstr = rand_str(16);
產生隨機字串的函數,代碼如下:
<?php /** * 產生隨機字串 * * 產生一個指定長度的隨機字串,並返回給使用者 * * @access public * @param int $len 產生字串的位元 * @return string */ function randStr($len=6) { $chars='ABDEFGHJKLMNPQRSTVWXYabdefghijkmnpqrstvwxy23456789#%*'; // characters to build the password from mt_srand((double)microtime()*1000000*getmypid()); // seed the random number generater (must be done) $password='';while(strlen($password)<$len) $password.=substr($chars,(mt_rand()%strlen($chars)),1); return $password; } ?>
建立字元池.
function randomkeys($length) { $pattern = '1234567890abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLOMNOPQRSTUVWXYZ,./&l t;>?;#:@~[]{}-_=+)(*&^%$?!'; //字元池 for($i=0; $i<$length; $i++) { $key .= $pattern{mt_rand(0,35)}; //產生php隨機數 } return $key; } echo randomkeys(8);
無需建立字元池
function randomkeys($length) { $output=''; for ($a = 0; $a < $length; $a++) { $output .= chr(mt_rand(35, 126)); //產生php隨機數 } return $output; } echo randomkeys(8);
隨機使用者名稱和隨機密碼例子:
//隨機產生使用者名稱(長度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);