Wirklich "unique" ID erzeugen
Alex Sommer
- php
Hallo,
ich will meine Messages in einer Community nicht öffentlich mit einer fortlaufenden ID versehen, sondern es soll nach außen nur eine Art Hash zu sehen sein (z.B. message.php?which=Ng2cMZbzInc)
Wie kann ich so eine unique "Hash-ID" generieren? Mit uniqid()?
Mir geht es nur darum, dass 1000%ig nicht nochmal die gleiche ID generiert wird, weil sonst gibt es ja in der Datenbank Probleme...
Danke,
Alex
Mahlzeit Alex Sommer,
Mir geht es nur darum, dass 1000%ig nicht nochmal die gleiche ID generiert wird, weil sonst gibt es ja in der Datenbank Probleme...
mache Tabelle
mache Spalte Unique-ID in Tabelle
mache Spalte Unique-ID UNIQUE
wiederhole
generiere Unique-ID
trage Unique-ID in Tabelle ein
bis eintragen geklappt hat
MfG,
EKKi
Mir geht es nur darum, dass 1000%ig nicht nochmal die gleiche ID generiert wird, weil sonst gibt es ja in der Datenbank Probleme...
Versuchs mal mit dem hier:
$id = mktime();
Die ist nie gleich, denn die Zeit bleibt ja nicht stehen ;).
Hi,
$id = mktime();
Die ist nie gleich, denn die Zeit bleibt ja nicht stehen ;).
Aber ich wette, daß für alle 1000 User die gleiche Zeit gilt (die des Servers), und sich weder User, noch Server getrennt in Paralleluniversen befinden (auch wenn es diesbezügl. Theorien gibt). ;)
Gruß, Cybaer
Hello,
Versuchs mal mit dem hier:
$id = mktime();
Die ist nie gleich, denn die Zeit bleibt ja nicht stehen ;).
Kommt darauf an, wieviele Requests innerhalb einer Quante eingehen...
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
ich will meine Messages in einer Community nicht öffentlich mit einer fortlaufenden ID versehen, sondern es soll nach außen nur eine Art Hash zu sehen sein (z.B. message.php?which=Ng2cMZbzInc)
Wie kann ich so eine unique "Hash-ID" generieren? Mit uniqid()?
Mir geht es nur darum, dass 1000%ig nicht nochmal die gleiche ID generiert wird, weil sonst gibt es ja in der Datenbank Probleme...
Um auch Kollisionen zu vermeiden, die bei Digests, wenn auch selten, so doch möglich sind, musst du Zähler und Digest kombinieren.
Alles eine Frage, was du mit 1000% meinst.
mfg Beat
Um auch Kollisionen zu vermeiden, die bei Digests, wenn auch selten, so doch möglich sind, musst du Zähler und Digest kombinieren.
da ist es doch wesentlich einfacher, ekkis vorschlag zu befolgen:
irgend einen hash erzeugen und diesen in die datenbank einfügen (feldinhalt muss natürlich unique sein): bei erfolgsmeldung hats geklappt, bei misserfolg die fehlermeldung auswerten (wenn die fehlermeldung besagt, dass der wert eindeutig sein muss, einfach einen neuen hash generieren und los