PHP隨機生成不重複的8位元元卡號(數位)和卡密(字串)

2020-07-16 10:05:53
一、生成不重複的亂數字,可自定義長度

/**
 * 生成不重複的亂數字
 * @param  int $start  需要生成的數位開始範圍
 * @param  int $end    結束範圍
 * @param  int $length 需要生成的亂數個數
 * @return number      生成的亂數
 */
function getRandNumber($start=0,$end=9,$length=8){
//初始化變數為0
$connt = 0;
//建一個新陣列
$temp = array();
while($connt < $length){
//在一定範圍內隨機生成一個數放入陣列中
$temp[] = mt_rand($start, $end);
//$data = array_unique($temp);
//去除陣列中的重複值用了「翻翻法」,就是用array_flip()把陣列的key和value交換兩次。這種做法比用 array_unique() 快得多。
$data = array_flip(array_flip($temp));
//將陣列的數量存入變數count中
$connt = count($data);
}
//為陣列賦予新的鍵名
shuffle($data);
//陣列轉字串
$str=implode(",", $data);
//替換掉逗號
$number=str_replace(',', '', $str);
return $number;
}

二、隨機生成不重複的8位元卡密

function makeCardPassword() {
        $code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
        $rand = $code[rand(0,25)]
            .strtoupper(dechex(date('m')))
            .date('d').substr(time(),-5)
            .substr(microtime(),2,5)
            .sprintf('%02d',rand(0,99));
        for(
            $a = md5( $rand, true ),
            $s = '0123456789ABCDEFGHIJKLMNOPQRSTUV',
            $d = '',
            $f = 0;
            $f < 8;
            $g = ord( $a[ $f ] ),
            $d .= $s[ ( $g ^ ord( $a[ $f + 8 ] ) ) - $g & 0x1F ],
            $f++
        );
        return  $d;
}

相關推薦:《PHP教學

以上就是PHP隨機生成不重複的8位元卡號(數位)和卡密(字串)的詳細內容,更多請關注TW511.COM其它相關文章!