Hoe zou het mogelijk zijn om een willekeurige, unieke string te genereren met cijfers en letters voor gebruik in een verificatielink? Zoals wanneer je een account aanmaakt op een website, en het stuurt je een e-mail met een link, en je moet op die link klikken om je account te verifiëren ... ja ... een van die.
Hoe kan ik zo'n link genereren met PHP?
Update: Ik herinnerde me net uniqid()
. Het's een PHP functie die een unieke identifier genereert op basis van de huidige tijd in microseconden. Ik denk dat ik'll dat ga gebruiken.
Veiligheidsbericht: Deze oplossing moet niet worden gebruikt in situaties waarin de kwaliteit van uw randomness de veiligheid van een applicatie kan beïnvloeden. In het bijzonder,
rand()
enuniqid()
zijn geen cryptografisch veilige willekeurige getallengeneratoren. Zie Scott's antwoord voor een veilig alternatief.
Als je het niet absoluut uniek hoeft te zijn in de tijd:
md5(uniqid(rand(), true))
Anders (als je al een unieke login voor je gebruiker hebt bepaald):
md5(uniqid($your_user_login, true))
Deze functie genereert een willekeurige sleutel met cijfers en letters:
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);
Voorbeeld output:
zsd16xzv3jsytnp87tk7ygv73k8zmr0ekh6ly7mxaeyeh46oe8
b.v. (in pseudo code)
int myInt = random(0, numcharacters)
char[] codealphabet = 'ABCDEF12345'
char random = codealphabet[i]
repeat until long enough