PHP: Optionen zur Generierung einer eindeutigen Benutzer-Schlüssel
Nach ein paar Tagen recherche auf Hash-Erzeugung von Zufallszahlen-oder unique-Schlüsseln, ich bin ein bisschen verwirrend jetzt.
Habe ich noch eine Letzte Sache, die ich möchte um es richtig zu machen, die der user-Taste. Ich möchte das speichern einer eindeutigen Schlüssel für jedes Mitglied/Nutzer, der sich anmeldet, auf meiner website. Also dieser Schlüssel muss eindeutig sein und nicht duplizieren. Ich bin am überlegen, verwenden Sie die Benutzer-E-Mails und hash mit timedate oder so...
Dann Frage ich mich, was ist der beste Weg, um erstellen Sie einen solchen Schlüssel -
Kann ich hash_hmac() das für mich tun?
Habe ich ein paar Dinge nicht zu verstehen, über hash_hmac() wenn - wie in diesem Beispiel aus dem php.net hash_hmac('ripemd160', 'The quick brown fox jumped over the lazy dog.', 'secret');
Also, was ist das "Geheimnis" - kann ich mir etwas anderes statt, wie ein timedate?
Ich gehe davon aus, dass ich ersetzen können, 'Der schnelle braune Fuchs sprang über den faulen Hund.' mit der E-Mail-Adresse?
oder vielleicht kann ich Portable PHP password hashing framework, dies zu tun?
die einzige Sache ist, dass es produziert .
, $
, und /
die ich brauche, um Sie zu entfernen sonst bekomme ich Fehler, wenn ich bitte Sie den Schlüssel aus der URL.
so, ich könnte dies tun -
$hash = $phpass -> HashPassword('[email protected]'.$timedate)
$key = preg_replace("/[^a-zA-Z0-9]+/", "", $hash);
Bitte lassen Sie mich wissen, wenn Sie irgendwelche bessere Vorschläge.
Was brauchen Sie, um diese einzigartige Benutzer-Taste?
Ich benutze es für die Identifizierung, wenn der Nutzer überprüft Ihre E-Mail-Adresse, etc. zum Beispiel, sende ich eine E-Mail wenn man sich registriert und Fragen Sie ihn/Sie zum klicken auf einen Bestätigungs-link wie - xx.com/verify/(key) - macht es Sinn?
InformationsquelleAutor laukok | 2011-01-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
md5(uniqid(rand(), TRUE));
index.php:
Ausgabe:
Sie sind alle einzigartig und Sie können einfach verwenden. Sollten Sie NICHT haben, etwas anderes zu tun?
Könnten Sie, aber warum wollen Sie tun, dass in den ersten Platz?
nur für den Fall, md5(uniqid(rand(), TRUE)); selbst ist nicht genug, um erstellen Sie den eindeutigen Schlüssel! also das hinzufügen der E-Mail würde es 100% einzigartig! lol oder ist es nicht notwendig?
autoincrement, ernst. Warum verwenden Sie etwas anderes? hat E-Mails und die Menschen nicht ändern können Ihre E-Mails, oder kann Sie nicht teilen, E-Mails (einige verheiratete Paare tun das)
Alfred: vielen Dank - ich werde dies gerne openid sehr viel! danke!! 🙂
InformationsquelleAutor Alfred
Empfehle ich das "stehlen" der drupal_random_bytes Funktion.
InformationsquelleAutor chx
Über hash_hmac():
Ich glaube, das "Geheimnis" ist nur einige Zeichenfolge, die nur durch Sie bekannt und den code. Es wird verwendet, um zu helfen, mischen Sie den Algorithmus und stellen Sie es einzigartig, je nachdem, welche "geheimen" Schlüssel, den Sie verwendet. Wählen Sie einfach jede phrase, die Sie wissen, und legen Sie es dort.
Hinweis: dies muss der gleiche Wert jedes mal, wenn Sie den hash, wenn Sie erwarten, den gleichen Wert zurück. So machen es etwas, das konstant, nicht variabel, damit Sie Ihre hash-Rückgabe einen anderen Wert jeder mal Sie es verwenden.
Aber ja, ersetzen Sie das "quick brown fox" mit dem, was Sie wollen, hash -, und es sollte funktionieren.
Auch eine option: den Primärschlüssel des Benutzers ist [in der Regel eine einfache integer] aus der Datenbank zu referenzieren.
InformationsquelleAutor Kautiontape