숫자로 된 시리얼 만들기

 

<?

//지정된 자릿수의 랜덤한 숫자를 반환합니다. 최대 10까지 가능합니다. 4 이면 1000 에서 9999 사이의 랜덤 숫자
function get_rand_number($len=4) {

    if (empty($len) || !is_int($len)) $len = 4;
    else if ($len < 0) $len = abs($len);
    if ($len > 10) $len = 10;

    return rand(bcpow(10, $len - 1), bcadd(bcpow(10, $len), -1));
}

//지정된 자릿수의 숫자로된 시리얼을 반환합니다. - 를 포함하고 싶지 않을때는 $cut 이 $len 보다 크거나 같으면 됩니다.
function get_serial($len=16, $cut=4, $hipen='-'){

    if (empty($len) || !is_int($len)) $len = 16;
    else if ($len < 0) $len = abs($len);

    if (empty($cut) || !is_int($cut)) $cut = 4;
    else if ($cut < 0) $cut = abs($cut);

    list($usec, $sec) = explode(' ', microtime());

    $serial = (string)bcmul((int)str_replace('.', '', (string)((float)$usec + (float)$sec)) , get_rand_number(4));
    $serial_length = strlen($serial);
    $sub = $len - $serial_length;

    if ($sub > 0) $serial .= (string)get_rand_number($sub); 
else if ($sub < 0) $serial = substr($serial, 0, $len); 

    return preg_replace("`([0-9]{" . $cut . "})`", "$1" . $hipen, $serial, floor($len / $cut) - 1);
}

echo get_serial(16, 4, '-');

?>

 

 

 

---------------------------------------------------------------------------------------------

$code = strtoupper( md5( rand( 1000 , 2000 ).date( "Y-m-d H:i:s" ).$i ) );
$sn=$code[rand(0,1)].$code[rand(2,3)].$code[rand(4,5)].$code[rand(6,7)]."-";
$sn.=$code[rand(8,9)].$code[rand(10,11)].$code[rand(12,13)].$code[rand(14,15)]."-";
$sn.=$code[rand(16,17)].$code[rand(18,19)].$code[rand(20,21)].$code[rand(22,23)];
결과물 : B307-47B8-8FC5

'PHP' 카테고리의 다른 글

php cURL  (0) 2012.04.30
PHP 코딩 팁  (0) 2012.04.23
git 가편 사용법 펌  (0) 2012.04.09
PHP class 정리  (0) 2012.03.30
PHP file 정리  (0) 2012.03.30
블로그 이미지

스마트전

,