php - uniqid - ¿Cómo generar un nuevo GUID?
uniqid php w3schools (5)
Estoy trabajando en un servicio web que requiere un nuevo GUID()
pasado como referencia a un método dentro del servicio.
No estoy familiarizado con C#
ni con el GUID() object
, pero necesito algo similar para PHP
(así que cree un nuevo objeto que a mi entender devuelve un empty/blank GUID
).
¿Algunas ideas?
Como alternativa a las opciones anteriores:
$guid = bin2hex(openssl_random_pseudo_bytes(16));
Da una cadena como 412ab7489d8b332b17a2ae127058f4eb
Para los usuarios de Google como yo mismo, encontré este recorte más preciso:
function getGUID(){
if (function_exists(''com_create_guid'')){
return com_create_guid();
}else{
mt_srand((double)microtime()*10000);//optional for php 4.2.0 and up.
$charid = strtoupper(md5(uniqid(rand(), true)));
$hyphen = chr(45);// "-"
$uuid = chr(123)// "{"
.substr($charid, 0, 8).$hyphen
.substr($charid, 8, 4).$hyphen
.substr($charid,12, 4).$hyphen
.substr($charid,16, 4).$hyphen
.substr($charid,20,12)
.chr(125);// "}"
return $uuid;
}
}
fuente http://guid.us/GUID/PHP
Puedes probar lo siguiente:
function GUID()
{
if (function_exists(''com_create_guid'') === true)
{
return trim(com_create_guid(), ''{}'');
}
return sprintf(''%04X%04X-%04X-%04X-%04X-%04X%04X%04X'', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535));
}
Según ¿Hay alguna diferencia entre un GUID y un UUID?
GUID es la implementación de Microsoft del estándar UUID.
Entonces, aquí hay un enlace a las bibliotecas, que le permite crear UUID de los siguientes tipos:
- versión 1 (basada en el tiempo)
- versión 3 (basada en nombre y hash con MD5)
- versión 4 (aleatoria)
- versión 5 (basada en nombre y hash con SHA1)
https://github.com/search?p=1&q=uuid+php&ref=cmdform&type=Repositories
No sé exactamente qué C # está usando, pero eso es al menos algo que puede usar si está escribiendo algún software y quiere tener identificadores únicos universales.
Mi elección preferida fue https://github.com/fredriklindberg/class.uuid.php porque es solo un archivo PHP simple y el más calificado ( https://github.com/ramsey/uuid ) tenía muchas dependencias en otras bibliotecas, pero la suya puede cambiar pronto (consulte https://github.com/ramsey/uuid/issues/20 ).
Pero si realmente necesita un GUID (de acuerdo con el estándar de Microsoft), tienen un proceso de generación diferente al de estos 4122. Wikipedia afirma que
Los GUID y los UUID RFC 4122 deben ser idénticos cuando se muestran textualmente
http://en.wikipedia.org/wiki/Globally_Unique_Identifier#Binary_encoding
En la mayoría de los casos, debería estar bien si va a una de las librerías de PHP para UUID. No creo que estés entrometido con el Modelo de objetos componentes de Microsoft (COM) , ¿verdad?
<?php
function guid(){
if (function_exists(''com_create_guid'') === true)
return trim(com_create_guid(), ''{}'');
$data = openssl_random_pseudo_bytes(16);
$data[6] = chr(ord($data[6]) & 0x0f | 0x40);
$data[8] = chr(ord($data[8]) & 0x3f | 0x80);
return vsprintf(''%s%s-%s-%s-%s-%s%s%s'', str_split(bin2hex($data), 4));
}
?>
Generador de GUID