Ich verwende GUIDs in einem meiner größten Projekte und habe damit sehr gute Erfahrungen gemacht. Immer wieder kommt die Frage, was ist ein GUID überhaupt, deshalb nun hier eine kleine Erläuterung. Ebenso verwende ich ein GUID als Schlüssel im Plugin ©Feed um dem Feed einen eindeutigen String zuzufügen und damit nach Contentdiebstahl zu suchen.
Ein Globally Unique Identifier (GUID) bzw. ein Universally Unique Identifier (UUID) ist eine global eindeutige Zahl, die in verteilten Computersystemen zum Einsatz kommt.
GUID, auch bekannt als UUID – Universally Unique Identifier – ist 128 Bit lang (32 Zeichen, besteht aus einer 16-Byte-Zahl), feste Größe und ist weltweit gültig für einen Registrierungsprozess. Es wird keine zentralisierte Berechtigung angefordert, um GUIDs zu erzeugen, deshalb kann die Erzeugung vollständig automatisiert werden.
Jede GUID ist praktisch einmalig. Die Wahrscheinlichkeit, dass zwei gleiche GUIDs erzeugt werden, ist sehr gering.
Die interne Darstellung eines UUID ist eine spezifische Sequence der Bits im Speicher. Die korrekte Darstellung des UUID als URN oder als menschliche lesbare Zeichenkette macht es erforderlich, die Bit-Sequence in einen String zu wandeln.
Jedes GUID wird als Integer (Ganzzahl) behandelt und mit Nullen aufgefüllt, zu einer hexadezimalen Zeichenkette. Die hexadezimalen Werte „a“ bis „f“ werden als Kleinbuchstaben ausgeben und sind nicht Case-Sensitive, sind also von Groß- und Kleinschreibung unabhängig.
Formale Darstellung des GUID
UUID = time-low "-" time-mid "-" time-high-and-version "-" clock-seq-and-reserved clock-seq-low "-" node time-low = 4hexOctet time-mid = 2hexOctet time-high-and-version = 2hexOctet clock-seq-and-reserved = hexOctet clock-seq-low = hexOctet node = 6hexOctet hexOctet = hexDigit hexDigit hexDigit = "0" / "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9" / "a" / "b" / "c" / "d" / "e" / "f" / "A" / "B" / "C" / "D" / "E" / "F"
Beispiel eines UIDD als URN
urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6
Beispielhafte Darstellung im XML
1bdf546c46bb3b4ce14d52ceecf5e99f
Erzeugung mit PHP
Einfache Lösung mit Funktion unigid, die allerdings keinen Zufallsanteil besitzt.
md5 (uniqid (""));
Deshalb ist die Erzeugung durch eine Koppelung mit Funktion rand wesentlich besser.
md5 (uniqid (rand()));
128 Bit oder 32 Zeichen? Irgendwas kann da nicht stimmen – bei 8 Bit pro Zeichen (also z.B. ISO-8859-x) wären 128 Bit 16 Zeichen oder entsprechend 32 Zeichen 256 Bit… Der gleiche Fehler steht in der MSDN aber auch, hab den Link leider grade nicht da…
Ein GUID besteht aus einer 16-Byte-Zahl (0-F), also 16Bit pro Zeichen. Vielleicht sollte ich das noch hinzubringen.