Come sarebbe possibile generare una stringa casuale e unica usando numeri e lettere da usare in un link di verifica? Come quando crei un account su un sito web, e ti manda un'email con un link, e devi cliccare su quel link per verificare il tuo account... sì... uno di quelli.
Come posso generarne uno usando PHP?
Aggiornamento: Mi sono appena ricordato di uniqid()
. È una funzione PHP che genera un identificatore unico basato sul tempo corrente in microsecondi. Penso che la userò.
Avviso di sicurezza: Questa soluzione non dovrebbe essere usata in situazioni in cui la qualità della casualità può influenzare la sicurezza di un'applicazione. In particolare, rand()
e uniqid()
non sono generatori di numeri casuali crittograficamente sicuri. Si veda la risposta di Scott's answer per un'alternativa sicura.
Se non hai bisogno che sia assolutamente unico nel tempo:
md5(uniqid(rand(), true))
Altrimenti (dato che hai già determinato un login unico per il tuo utente):
md5(uniqid($your_user_login, true))
Questa funzione genera una chiave casuale usando numeri e lettere:
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);
Esempio di output:
zsd16xzv3jsytnp87tk7ygv73k8zmr0ekh6ly7mxaeyeh46oe8
ad esempio (in pseudo codice)
int myInt = random(0, numcharacters)
char[] codealphabet = 'ABCDEF12345'
char random = codealphabet[i]
repeat until long enough