Veamos diferentes formas de generar números e identificadores aleatorios con PHP.
1 2 |
<?php echo rand(); 485308954 |
La función rand() nos permite incluir un rango del número que queremos generar.
1 2 |
<?php echo rand(1,1000); 587 |
1 2 |
<?php echo getrandmax(); 2147483647 |
El algoritmo de generación de números aleatorios de la función mt_rand() es hasta cuatro veces más rápido pero no genera números criptográficamente seguros.
1 2 |
<?php echo mt_rand(); 255106411 |
También podremos indicar un mínimo y un máximo el cual es definido por la función mt_getrandmax()
1 2 |
<?php echo mt_rand(1,1000); 151 |
Y aunque mt_rand() solo genera números aleatorios enteros podremos ampliar su funcionalidad para generar decimales aleatorios.
1 2 |
<?php echo mt_rand(1, 1000)/100; 6.72 |
También existen funciones como srand() para generar números aleatorios a partir de una semilla.
1 2 3 |
<?php echo mt_srand(mktime()); echo mt_rand(); 1926370275 |
Con la entrada a escena de PHP7 nos encontramos con la función random_int()
1 2 |
<?php echo random_int(-1000, 1000); 753 |
Continuando con funciones que salieron con PHP7 también tenemos random_bytes() que genera bytes pseudoaleatorios y también criptográficamente seguros.
1 2 |
<?php echo bin2hex(random_bytes(10)); a89763a5ed928c21b028 |
Otra muy buena función para generar valores criptográficamente seguros es la función sino dispones de PHP7 en tu servidor es openssl_random_pseudo_bytes()
1 2 |
<?php echo bin2hex(openssl_random_pseudo_bytes(10)); 45a266d3fbc7685e0326 |
También existe otra función llamada uniqid() que nos permitirá generar identificadores únicos.
1 2 |
<?php echo uniqid(); 5c562150f0c57 |
Si queremos que estos valores sean mucho más precisos y no se repitan le podremos indicar un prefijo.
1 2 |
<?php echo uniqid($user_id); 15c562150f0c9c |
Y si añadimos entropía, su longitud se incrementará a 23 caracteres.
1 2 |
<?php echo uniqid($user_id, TRUE); 15c562150f0c9e4.25840420 |