How do i generate a random 6 digit number in php?

How can I generate a 6 digit unique number? I have verification mechanisms in place to check for duplicate entries.

How do i generate a random 6 digit number in php?

peterh

11.1k15 gold badges80 silver badges101 bronze badges

asked Mar 28, 2011 at 20:50

How do i generate a random 6 digit number in php?

2

$six_digit_random_number = random_int(100000, 999999);

As all numbers between 100,000 and 999,999 are six digits, of course.

answered Mar 28, 2011 at 20:52

CharlesCharles

50.3k13 gold badges101 silver badges141 bronze badges

6

If you want it to start at 000001 and go to 999999:

$num_str = sprintf("%06d", mt_rand(1, 999999));

Mind you, it's stored as a string.

answered Mar 28, 2011 at 20:52

How do i generate a random 6 digit number in php?

Tim CooperTim Cooper

153k37 gold badges320 silver badges272 bronze badges

1

Another one:

str_pad(mt_rand(0, 999999), 6, '0', STR_PAD_LEFT);

Anyway, for uniqueness, you will have to check that your number hasn't been already used.

You tell that you check for duplicates, but be cautious since when most numbers will be used, the number of "attempts" (and therefore the time taken) for getting a new number will increase, possibly resulting in very long delays & wasting CPU resources.

I would advise, if possible, to keep track of available IDs in an array, then randomly choose an ID among the available ones, by doing something like this (if ID list is kept in memory):

$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--;

You can do something similar even if the ID list is stored in a database.

answered Mar 28, 2011 at 20:54

How do i generate a random 6 digit number in php?

Frosty ZFrosty Z

21.6k11 gold badges81 silver badges110 bronze badges

There are some great answers, but many use functions that are flagged as not cryptographically secure. If you want a random 6 digit number that is cryptographically secure you can use something like this:

$key = random_int(0, 999999);
$key = str_pad($key, 6, 0, STR_PAD_LEFT);
return $key;

This will also include numbers like 000182 and others that would otherwise be excluded from the other examples.

You can also use a loop to make each digit random and generate random number with as many digits as you may need:

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;
}

For reference, random_int — Generates cryptographically secure pseudo-random integers that are suitable for use where unbiased results are critical, such as when shuffling a deck of cards for a poker game." - php.net/random_int

answered Feb 25, 2021 at 4:59

Mav2287Mav2287

7762 gold badges9 silver badges21 bronze badges

4

Here's another one:

substr(number_format(time() * rand(),0,'',''),0,6);

answered Jun 5, 2013 at 17:38

law.vzmklaw.vzmk

1341 silver badge3 bronze badges

<?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;
?>

i hope this will work fine. i use the same technique in my website.

answered Oct 19, 2015 at 16:25

How do i generate a random 6 digit number in php?

virusvirus

871 silver badge3 bronze badges

0

In PHP 7.0+ I would suggest random_int($min, $max) over mt_rand().

$randomSixDigitInt = \random_int(100000, 999999);

From php.net:

Caution This function does not generate cryptographically secure values, and should not be used for cryptographic purposes. If you need a cryptographically secure value, consider using random_int(), random_bytes(), or openssl_random_pseudo_bytes() instead.

So this depends mostly on context. I'll also add that as of PHP 7.1.0 rand() is now an alias to mt_rand().

Cheers

answered Sep 11, 2018 at 21:36

How do i generate a random 6 digit number in php?

Yes BarryYes Barry

9,3614 gold badges46 silver badges67 bronze badges

1

$characters = '123456789';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < 6; $i++) {
    $randomString .= $characters[rand(0, $charactersLength - 1)];
}
$pin=$randomString; 

How do i generate a random 6 digit number in php?

JON

8992 gold badges10 silver badges28 bronze badges

answered Sep 6, 2018 at 15:13

How do i generate a random 6 digit number in php?

This will generate random 6 digit number

<?php
    mt_rand(100000,999999);
?>

answered Dec 1, 2015 at 13:23

How do i generate a random 6 digit number in php?

Ananta PrasadAnanta Prasad

3,4862 gold badges22 silver badges35 bronze badges

2

I would use an algorithm, brute force could be as follows:

First time through loop: Generate a random number between 100,000 through 999,999 and call that x1

Second time through the loop Generate a random number between 100,000 and x1 call this xt2, then generate a random number between x1 and 999,999 call this xt3, then randomly choose x2 or x3, call this x2

Nth time through the loop Generate random number between 100,000 and x1, x1 and x2, and x2 through 999,999 and so forth...

watch out for endpoints, also watch out for x1

answered Mar 28, 2011 at 20:56

How do i generate a random 6 digit number in php?

rossb83rossb83

1,6744 gold badges19 silver badges38 bronze badges

1

<?php echo rand(100000,999999); ?>

you can generate random number

answered Oct 14, 2017 at 9:29

How do i generate a random 6 digit number in php?

1

You can use $uniq = round(microtime(true));

it generates 10 digit base on time which is never be duplicated

answered Jul 3, 2020 at 3:36

Try this using uniqid and hexdec,

echo hexdec(uniqid());

answered Jan 20, 2021 at 6:27

How do i generate a random 6 digit number in php?

JONJON

8992 gold badges10 silver badges28 bronze badges

Among the answers given here before this one, the one by "Yes Barry" is the most appropriate one.

random_int(100000, 999999)

Note that here we use random_int, which was introduced in PHP 7 and uses a cryptographic random generator, something that is important if you want random codes to be hard to guess. random_bytes was also introduced in PHP 7 and likewise uses a cryptographic random generator.

Many other solutions for random value generation, including those involving time(), microtime(), uniqid(), rand(), mt_rand(), str_shuffle(), array_rand(), and shuffle(), are much more predictable and are unsuitable if the random string will serve as a password, a bearer credential, a nonce, a session identifier, a "verification code" or "confirmation code", or another secret value.

The code above generates a string of 6 decimal digits. If you want to use a bigger character set (such as all upper-case letters, all lower-case letters, and the 10 digits), this is a more involved process, but you have to use random_int or random_bytes rather than rand(), mt_rand(), str_shuffle(), etc., if the string will serve as a password, a "confirmation code", or another secret value. See an answer to a related question, and see also: generating a random code in php?

I also list other things to keep in mind when generating unique identifiers, especially random ones.

answered Jan 20, 2021 at 7:51

Peter O.Peter O.

31.2k14 gold badges77 silver badges92 bronze badges

This is the easiest method to generate 6 digits random number

$data = random_int(100000, 999999);
echo $data;

answered Jul 8 at 16:18

How do i generate a random 6 digit number in php?

How do I randomize a number in PHP?

The rand() function generates a random integer. Example tip: If you want a random integer between 10 and 100 (inclusive), use rand (10,100). Tip: As of PHP 7.1, the rand() function has been an alias of the mt_rand() function.

How do I generate a random 4 digit number in PHP?

Generate 4 Digit Random Number using mt_rand() mt_rand() function is just like rand() function but it is 4 times faster than rand() function. To use mt_rand() function define min and max numbers. The mt_rand() function will return a random integer between min and max numbers (including min and max numbers).

What is Mt_rand function in PHP?

The mt_rand() function is a drop-in replacement for the older rand(). It uses a random number generator with known characteristics using the » Mersenne Twister, which will produce random numbers four times faster than what the average libc rand() provides.

How do you generate a random number code?

Examples.
A Random number between 0 and 100. value = rand() * 100;.
A Random true or false. decision = (rand() > .5);.
A Random number between 50 and 100. x = (rand() * 50) + 50;.
A Random integer between 1 and 10. To get an integer from a floating point value we can use functions such as round or ceil or floor..