6자리 고유 번호를 생성하려면 어떻게 해야 합니까?
6자리 고유 번호를 생성하려면 어떻게 해야 합니까?중복 입력 여부를 확인할 수 있는 검증 메커니즘을 마련했습니다.
$six_digit_random_number = random_int(100000, 999999);
물론 10만에서 99만 9999 사이의 숫자는 모두 여섯 자리입니다.
이 °C인 경우000001
가에 .999999
:
$num_str = sprintf("%06d", mt_rand(1, 999999));
주의하세요, 그것은 끈으로 저장되어 있습니다.
또 하나:
str_pad(mt_rand(0, 999999), 6, '0', STR_PAD_LEFT);
어쨌든 고유성을 위해서는 번호가 아직 사용되지 않았음을 확인해야 할 것입니다.
중복 여부를 확인한다고 말하지만, 대부분의 숫자를 사용할 경우 새 숫자를 얻기 위한 "시도"(따라서 시간이 걸리는) 수가 증가하여 지연 시간이 매우 길어지고 CPU 리소스가 낭비될 수 있으므로 주의해야 합니다.
가능한 경우 배열에서 사용 가능한 ID를 추적한 다음 사용 가능한 ID 중에서 임의로 ID를 선택하는 것이 좋습니다(ID 목록이 메모리에 저장되어 있는 경우).
$arrayOfAvailableIDs = array_map(function($nb) {
return str_pad($nb, 6, '0', STR_PAD_LEFT);
}, range(0, 999999));
$nbAvailableIDs = count($arrayOfAvailableIDs);
// pick a random ID
$newID = array_splice($arrayOfAvailableIDs, mt_rand(0, $nbAvailableIDs-1), 1);
$nbAvailableIDs--;
ID 목록을 데이터베이스에 저장하더라도 유사한 작업을 수행할 수 있습니다.
여기 또 하나가 있습니다.
substr(number_format(time() * rand(),0,'',''),0,6);
몇 가지 훌륭한 답이 있지만, 암호학적으로 안전하지 않은 것으로 플래그가 지정된 함수를 사용하는 경우가 많습니다.암호학적으로 안전한 임의의 6자리 숫자를 원한다면 다음과 같은 것을 사용할 수 있습니다.
$key = random_int(0, 999999);
$key = str_pad($key, 6, 0, STR_PAD_LEFT);
return $key;
여기에는 000182와 같은 번호와 그렇지 않으면 다른 예에서 제외되는 다른 번호도 포함됩니다.
또한 루프를 사용하여 각 숫자를 랜덤으로 만들고 필요한 만큼의 숫자로 난수를 생성할 수 있습니다.
function generateKey($keyLength) {
// Set a blank variable to store the key in
$key = "";
for ($x = 1; $x <= $keyLength; $x++) {
// Set each digit
$key .= random_int(0, 9);
}
return $key;
}
참고로 random_int — 포커 게임을 위해 카드 한 벌을 섞을 때와 같이 편견 없는 결과가 중요한 경우에 사용하기에 적합한 암호학적으로 안전한 의사 random 정수를 생성합니다." - php.net/random_int
<?php
$file = 'count.txt';
//get the number from the file
$uniq = file_get_contents($file);
//add +1
$id = $uniq + 1 ;
// add that new value to text file again for next use
file_put_contents($file, $id);
// your unique id ready
echo $id;
?>
이것이 잘 작동하기를 바랍니다.저는 제 웹사이트에서도 같은 기술을 사용합니다.
에서는 PHP 7.0+ 에서합니다를 합니다.random_int($min, $max)
mt_rand()
.
$randomSixDigitInt = \random_int(100000, 999999);
php.net 에서:
주의 이 함수는 암호학적으로 안전한 값을 생성하지 않으며 암호화 목적으로 사용해서는 안 됩니다.암호학적으로 보안된 값이 필요한 경우 대신 random_int(), random_bytes() 또는 openssl_random_pseudo_bytes()를 사용하는 것을 고려해 보십시오.
따라서 이는 대부분 문맥에 따라 달라집니다. PHP 7.1.0하겠습니다 rand()
지금은 에 대한 별칭입니다.mt_rand()
.
건배.
$characters = '123456789';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < 6; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
$pin=$randomString;
이렇게 하면 랜덤 6자리 숫자가 생성됩니다.
<?php
mt_rand(100000,999999);
?>
알고리즘을 사용합니다. 브루트 포스는 다음과 같습니다.
처음으로 루프를 통과합니다.100,000에서 999,999 사이의 임의의 숫자를 생성하고 x1을 호출합니다.
루프를 통과하는 두 번째 시간 100,000과 x1 사이의 난수를 생성하고 x1과 999,999 사이의 난수를 생성하고 x2 또는 x3를 랜덤하게 선택하고 x2를 호출합니다.
루프를 통해 n번째로 100,000에서 x1, x1과 x2, x2에서 999,999 사이의 난수를 생성합니다...
엔드포인트 주의, x1 주의
<?php echo rand(100000,999999); ?>
임의의 숫자를 생성할 수 있습니다.
이것은 6자리 난수를 생성하는 가장 쉬운 방법입니다.
$data = random_int(100000, 999999);
echo $data;
$uniq = 라운드(microtime(true));를 사용할 수 있습니다.
시간에 따라 10자리의 숫자를 생성하며 절대 중복되지 않습니다.
uniqid와 hexdec을 사용해서 이것을 시도해보세요.
echo hexdec(uniqid());
여기에 제시된 답변 중에서 '예스 배리'의 답변이 가장 적합합니다.
random_int(100000, 999999)
여기서는 다음을 사용합니다.random_int
, 은 PHP 7 합니다. 랜덤 코드를 추측하기 어렵다면 중요한 것입니다.random_bytes
PHP 7에도 도입되었으며 마찬가지로 암호화 랜덤 생성기를 사용합니다.
가치 여러 : 관련 )time()
,microtime()
,uniqid()
,rand()
,mt_rand()
,str_shuffle()
,array_rand()
,그리고.shuffle()
증명, 또는 값, , , , , "" "" 의 을 하는 더 .
위의 코드는 6자리의 10진수 문자열을 생성합니다.: 모든 )을 이 더합예:자,자, 1리)다를 .random_int
아니면random_bytes
rand()
,mt_rand()
,str_shuffle()
, 문자열이 비밀번호, "확인 코드" 또는 다른 비밀 값으로 사용되는 경우 등.관련 질문에 대한 답변을 참조하십시오. pph로 랜덤 코드 생성?
또한 고유 식별자를 생성할 때 주의해야 할 사항, 특히 랜덤 식별자를 나열합니다.
언급URL : https://stackoverflow.com/questions/5464906/how-can-i-generate-a-6-digit-unique-number
'programing' 카테고리의 다른 글
MySQL에서 연결 시간대 변경 (0) | 2023.09.27 |
---|---|
PowerShell v5 모듈에서 클래스를 내보내는 방법 (0) | 2023.09.27 |
우커머스에서 받은 페이지 순으로 텍스트 변경 (0) | 2023.09.27 |
검토를 기다리는 일반적인 시간은? (0) | 2023.09.27 |
비트 필드 배열을 사용할 수 있습니까? (0) | 2023.09.27 |