Kā būtu iespējams ģenerēt nejaušu, unikālu virkni, izmantojot skaitļus un burtus, lai to izmantotu verifikācijas saitē? Piemēram, kad jūs izveidojat kontu kādā tīmekļa vietnē, un jums tiek nosūtīts e-pasts ar saiti, un jums ir jānoklikšķina uz šīs saites, lai apstiprinātu savu kontu... jā... viens no tiem.
Kā es varu izveidot šādu saiti, izmantojot PHP?
Atjauninājums: Tikko atcerējos par uniqid()
. Tā ir PHP funkcija, kas ģenerē unikālu identifikatoru, pamatojoties uz pašreizējo laiku mikrosekundēs. Domāju, ka es to izmantošu.
Drošības paziņojums: Šo risinājumu nevajadzētu izmantot situācijās, kad nejaušības kvalitāte var ietekmēt lietojumprogrammas drošību. Jo īpaši
rand()
ununiqid()
nav kriptogrāfiski droši gadījuma skaitļu ģeneratori. Skatiet Scott's atbildi par drošu alternatīvu.
Ja jums nav nepieciešams, lai tas būtu absolūti unikāls laika gaitā:
md5(uniqid(rand(), true))
Pretējā gadījumā (ņemot vērā, ka lietotājam jau ir noteikts unikāls pieteikšanās vārds):
md5(uniqid($your_user_login, true))
Šī funkcija ģenerē izlases atslēgu, izmantojot ciparus un burtus:
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);
Izvades piemērs:
zsd16xzv3jsytnp87tk7ygv73k8zmr0ekh6ly7mxaeyeh46oe8
piemēram (pseidokodā)
int myInt = random(0, numcharacters)
char[] codealphabet = 'ABCDEF12345'
char random = codealphabet[i]
repeat until long enough