密码动态生成(复杂、纯英文、纯数字)
程序员文章站
2022-05-14 17:03:44
...
PHP动态生成 复杂、纯英文、纯数字密码
function randpw($len=8,$format='ALL'){ $is_abc = $is_numer = 0; $password = $tmp =''; switch($format){ case 'ALL': $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; break; case 'CHAR': $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; break; case 'NUMBER': $chars='0123456789'; break; default : $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; break; } mt_srand((double)microtime()*1000000*getmypid()); //组合字符串 while(strlen($password)<$len){ //随机字符或数字 $tmp =substr($chars,(mt_rand()%strlen($chars)),1); //判断是否出现数字了 if(($is_numer <> 1 && is_numeric($tmp) && $tmp > 0 )|| $format == 'CHAR'){ $is_numer = 1; } //判断是否出现字符了 if(($is_abc <> 1 && preg_match('/[a-zA-Z]/',$tmp)) || $format == 'NUMBER'){ $is_abc = 1; } //连接 $password.= $tmp; } //判断条件是否符合,或者重新生成 if($is_numer <> 1 || $is_abc <> 1 || empty($password) ){ $password = randpw($len,$format); } return $password; } for($i = 0 ; $i < 10; $i++){ echo randpw(8,'NUMBER'); echo " "; }