Wie wäre es möglich, eine zufällige, eindeutige Zeichenfolge aus Zahlen und Buchstaben für einen Verifizierungslink zu erzeugen? Zum Beispiel, wenn man ein Konto auf einer Website erstellt und eine E-Mail mit einem Link erhält, auf den man klicken muss, um das Konto zu verifizieren... ja... so etwas.
Wie kann ich einen solchen Link mit PHP generieren?
Aktualisierung: Ich habe mich gerade an uniqid()
erinnert. Es ist eine PHP-Funktion, die eine eindeutige Kennung auf der Grundlage der aktuellen Zeit in Mikrosekunden erzeugt. Ich denke, ich werde das verwenden.
Sicherheitshinweis: Diese Lösung sollte nicht in Situationen verwendet werden, in denen die Qualität der Zufallszahlen die Sicherheit einer Anwendung beeinträchtigen kann. Insbesondere
rand()
unduniqid()
sind keine kryptographisch sicheren Zufallszahlengeneratoren. Siehe Scott's Antwort für eine sichere Alternative.
Wenn Sie keine absolute Eindeutigkeit über die Zeit benötigen:
md5(uniqid(rand(), true))
Andernfalls (wenn Sie bereits eine eindeutige Anmeldung für Ihren Benutzer festgelegt haben):
md5(uniqid($your_user_login, true))
Mit dieser Funktion wird ein Zufallsschlüssel aus Zahlen und Buchstaben erzeugt:
function random_string($length) {
$key = '';
$keys = array_merge(range(0, 9), range('a', 'z'));
for ($i = 0; $i < $length; $i++) {
$key .= $keys[array_rand($keys)];
}
return $key;
}
echo random_string(50);
Beispiel-Ausgabe:
zsd16xzv3jsytnp87tk7ygv73k8zmr0ekh6ly7mxaeyeh46oe8
z.B. (in Pseudo-Code)
int myInt = random(0, numcharacters)
char[] codealphabet = 'ABCDEF12345'
char random = codealphabet[i]
repeat until long enough