Mantén la atención porque en este tutorial vas a hallar la solución que buscas.Este post ha sido evaluado por nuestros expertos para asegurar la calidad y exactitud de nuestro post.
Solución:
En lugar de dividirlo en campos individuales, es más fácil generar un bloque de datos aleatorio y cambiar las posiciones de los bytes individuales. También debería utilizar un generador de números aleatorios mejor que mt_rand ().
De acuerdo con RFC 4122 – Sección 4.4, debe cambiar estos campos:
time_hi_and_version
(bits 4-7 del séptimo octeto),clock_seq_hi_and_reserved
(bit 6 y 7 del noveno octeto)
Todos los otros 122 bits deben ser suficientemente aleatorios.
El siguiente enfoque genera 128 bits de datos aleatorios utilizando openssl_random_pseudo_bytes()
, hace las permutaciones en los octetos y luego usa bin2hex()
y vsprintf()
para hacer el formateo final.
function guidv4($data)
0x80); // set bits 6-7 to 10
return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
echo guidv4(openssl_random_pseudo_bytes(16));
Con PHP 7, generar secuencias de bytes aleatorias es aún más simple usando random_bytes()
:
function guidv4($data = null)
$data = $data ?? random_bytes(16);
// ...
Tomado de este comentario sobre el manual de PHP, puede usar esto:
function gen_uuid() 0x8000,
// 48 bits for "node"
mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff )
);
Cualquiera que use compositor dependencias, es posible que desee considerar esta biblioteca: https://github.com/ramsey/uuid
No hay nada más fácil que esto:
Uuid::uuid4();
Eres capaz de estimular nuestra ocupación poniendo un comentario y dejando una puntuación te damos las gracias.