AndyPT: uniqueid mit nur 6 Stellen

Hi,

ich habe da eine Frage zur Erstellung von UniqueId's mit nur 6 Stellen.

Ich möchte in einer Datenbank verschiedene User speichern. Dazu möchte ich auf der HTML-Oberfläche nicht über die autoinkrement Zahl der Datenbank referenzieren.

Da die autoinkrement Zahl viel zu schnell zu eraten ist und sich auch Rückschlüsse über die Anzahl machen lässt, würde ich gerne pro User eine 6 Stellige ID's erstellen, die Unique ist.

Ich kann UniqueID's entweder mit PHP erstellen oder über MySQL INSERTS, aber die sind mir viel zu lang. Timestamps sind schön kurz, aber auch leicht zu durchschauen.

Meine Frage ist jetzt, ob ich die UniqueID's einfach kürzen kann.
z.B. $id = md5(substr(uniqid(time()), 0, 6));

Nur dürfte das nichtmehr Unique sein....
Oder ob es eine andere Möglichkeit gibt sowas zu realisieren.

vielen Dank schonmal fürs 'drüberNachdenken...
Andy

  1. Nur dürfte das nichtmehr Unique sein....
    Oder ob es eine andere Möglichkeit gibt sowas zu realisieren.

    Bruzzel Dir die IDs doch selbst, Zufallsstring nehmen, und dann transaktional die Prüfung, ob es die ID schon gibt, an die Speicherung des Datensatzes binden.

    BTW - ich würde auf jeden Fall die bereitstehenden IDs nehmen. "Zu lang" oder "Zu kurz" kann hier kein Kriterium sein.

    Sind die IDs numerisch und erratbar, würde ich ein Berechtigungskonzept in Erwägung ziehen. Gehört sich eigentlich sowieso.

  2. hi,

    Da die autoinkrement Zahl viel zu schnell zu eraten ist und sich auch Rückschlüsse über die Anzahl machen lässt, würde ich gerne pro User eine 6 Stellige ID's erstellen, die Unique ist.

    .. Timestamps sind schön kurz, aber auch leicht zu durchschauen.

    also die anzahl wird damit nicht durchschaubar und so wie ich das verstanden habe ist das auch dein ziel.

    Meine Frage ist jetzt, ob ich die UniqueID's einfach kürzen kann.
    z.B. $id = md5(substr(uniqid(time()), 0, 6));

    also das wäre dann nur aller ~10 sekunden unique, da du die letzten 3 ziffern abschneidest.

    eine einfache lösung für systeme die nicht verteilt laufen, wäre:
    $id = substr(time(), 4);

    gruss,
    robbe.