com_create_guid

(PHP 5, PHP 7, PHP 8)

com_create_guidGenerate a globally unique identifier (GUID)

Beschreibung

com_create_guid(): string|false

Generates a Globally Unique Identifier (GUID).

A GUID is generated in the same way as DCE UUID's, except that the Microsoft convention is to enclose a GUID in curly braces.

Parameter-Liste

Diese Funktion besitzt keine Parameter.

Rückgabewerte

Returns the GUID as a string, Bei einem Fehler wird false zurückgegeben..

Siehe auch

  • uuid_create() in the PECL uuid extension

add a note

User Contributed Notes 5 notes

up
34
Dave Pearson (dave at pds-uk dot com)
9 years ago
Here's my final version of a GUIDv4 function (based on others work here) that should work on all platforms and gracefully fallback to less cryptographically secure version if others are not supported...<?php/** * Returns a GUIDv4 string * * Uses the best cryptographically secure method  * for all supported pltforms with fallback to an older,  * less secure version. * * @param bool $trim * @return string */function GUIDv4 ($trim = true){    // Windows    if (function_exists('com_create_guid') === true) {        if ($trim === true)            return trim(com_create_guid(), '{}');        else            return com_create_guid();    }    // OSX/Linux    if (function_exists('openssl_random_pseudo_bytes') === true) {        $data = openssl_random_pseudo_bytes(16);        $data[6] = chr(ord($data[6]) & 0x0f | 0x40);    // set version to 0100        $data[8] = chr(ord($data[8]) & 0x3f | 0x80);    // set bits 6-7 to 10        return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));    }    // Fallback (PHP 4.2+)    mt_srand((double)microtime() * 10000);    $charid = strtolower(md5(uniqid(rand(), true)));    $hyphen = chr(45);                  // "-"    $lbrace = $trim ? "" : chr(123);    // "{"    $rbrace = $trim ? "" : chr(125);    // "}"    $guidv4 = $lbrace.              substr($charid,  0,  8).$hyphen.              substr($charid,  8,  4).$hyphen.              substr($charid, 12,  4).$hyphen.              substr($charid, 16,  4).$hyphen.              substr($charid, 20, 12).              $rbrace;    return $guidv4;}?>
up
39
Alix Axel
14 years ago
The phunction PHP framework (http://sourceforge.net/projects/phunction/) uses the following function to generate valid version 4 UUIDs:<?phpfunction 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));}?>The output generated by the sprintf() and mt_rand() calls is identical to com_create_guid() results.
up
28
pavel.volyntsev(at)gmail
9 years ago
Use more cryptographically strong algorithm to generate pseudo-random bytes and format it as GUID v4 stringfunction guidv4(){    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); // set version to 0100    $data[8] = chr(ord($data[8]) & 0x3f | 0x80); // set bits 6-7 to 10    return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));}
up
11
indrora
9 years ago
If you're going to generate random UUIDs, at least make them conform:* The uppermost byte of the third stanza must be 4* the uppermost byte of the fourth stanza may be any of (8 9 a b)see also: The wikipedia page for UUIDs: https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_4_.28random.29
up
0
internmail (at the google mail).com
5 years ago
function create_guid() { // Create GUID (Globally Unique Identifier)        $guid = '';        $namespace = rand(11111, 99999);        $uid = uniqid('', true);        $data = $namespace;        $data .= $_SERVER['REQUEST_TIME'];        $data .= $_SERVER['HTTP_USER_AGENT'];        $data .= $_SERVER['REMOTE_ADDR'];        $data .= $_SERVER['REMOTE_PORT'];        $hash = strtoupper(hash('ripemd128', $uid . $guid . md5($data)));        $guid = substr($hash,  0,  8) . '-' .                substr($hash,  8,  4) . '-' .                substr($hash, 12,  4) . '-' .                substr($hash, 16,  4) . '-' .                substr($hash, 20, 12);        return $guid;    }
To Top