eindeutige ID

mgraf

Erfahrenes Mitglied
Hallo,
weil ich schon einmal Probleme mit meiner User Identifikation hatte, (srand + md5), frage ich vorher ;-)

Kann diese Funktion eine eindeutige ID generieren - ich benutze es um einen User zu indentifizieren:

PHP:
function generate_hash(){

    $hash = sha1(microtime(true).mt_rand(10000,90000));

    //Prüfen ob der Key schon existiert
    if(mysql_num_rows(mysql_query("SELECT unique_code FROM einladung_tester WHERE unique_code='".$hash."'")) > 0)
        return generate_hash();

    return $hash;

}

lg
michi
 
Zuletzt bearbeitet:
Ja, das tu sie. Du musst es aber nicht unbedingt rekursiv lösen, eine iterative Lösung ist ebenso möglich:
PHP:
function generate_hash() {
    do {
        $hash = sha1(microtime(true).mt_rand(10000,90000));
        //Prüfen ob der Key schon existiert
    } while (mysql_num_rows(mysql_query("SELECT unique_code FROM einladung_tester WHERE unique_code='".$hash."'")) === 0);
    return $hash;
}
 
Danke!

Eigentlich dachte ich ja auch, dass folgendes auch reicht (bei max. 120 benutzern):
PHP:
function generate_hash()
    {
        srand((double)microtime()*1000000);
        $hash = md5(rand(0,100));
        return $hash;
    }

Großer Irrtum, ich hab sehr viele doppelt und dreifach... naja, die neue sollts richten...

lg
michi
 
rand(0,100) generiert dir nur Wert zwischen 0 und 100 (inklusive), also 101 unterschiedliche Werte. 120 Werte kannst du damit also nicht abdecken.
 
Warum ueberhaupt md5() verwenden? Ich wuerde hier schlichtweg, wie ja bereits vorgeschlagen, mit uniqid() arbeiten, dafuer ist es ja da.
 
Zurück