欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

密码动态生成(复杂、纯英文、纯数字)

程序员文章站 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 "
";
}