Jörg Reinholz: Und jetzt, warum das falsch ist:

Beitrag lesen

Moin!

$zufall = uniqid() . uniqid() . uniqid();

damit bekomme ich dann also so eine lange Zahl: 5526c7bd5371e5526c7bd537295526c7bd5375f Ok, nehme ich!

Naja, wenn da nicht noch was wäre:

5526c7bd5371e
5526c7bd53729
5526c7bd5375f

Diese "Zufallszahlen" unterscheiden sich viel zu wenig: nämlich, auf Grund des kurzen Zeitablaufes, nur in den letzten beiden Stellen.

Wenn es nur eindeutig sein soll, dann nimm nur uniqueid().

Wenn es "hinreichend wahrscheinlich eindeutig" und nicht zu erraten sein soll, dann nimm etwas wie:

sha1(mt_rand(0,mt_getrandmax()) .uniqid() . uniqid() . uniqid());

Aber Gnade Dir auf Windows-Systemen: da liefert mt_getrandmax() nämlich nur 2^15, also rund 32000

Hast Du aber PHP >= 5.3, dann nimm einfach:

$hex=bin2hex(openssl_random_pseudo_bytes(32));

Jörg Reinholz