Comment serait-il possible de générer une chaîne aléatoire et unique à partir de chiffres et de lettres pour l'utiliser dans un lien de vérification ? Comme lorsque vous créez un compte sur un site web, et qu'il vous envoie un email avec un lien, et que vous devez cliquer sur ce lien afin de vérifier votre compte... oui... un de ces liens.
Comment puis-je en générer un en utilisant PHP ?
Mise à jour: Je viens de me souvenir de [uniqid()
][1]. C'est une fonction PHP qui génère un identifiant unique basé sur l'heure actuelle en microsecondes. Je pense que je vais l'utiliser.
[1] : http://php.net/uniqid
Avis de sécurité : Cette solution ne doit pas être utilisée dans des situations où la qualité de votre caractère aléatoire peut affecter la sécurité d'une application. En particulier,
rand()
etuniqid()
ne sont pas des générateurs de nombres aléatoires cryptographiquement sûrs. Voir la réponse de Scott pour une alternative sécurisée.
Si vous n'avez pas besoin qu'il soit absolument unique dans le temps :
md5(uniqid(rand(), true))
.
Sinon (étant donné que vous avez déjà déterminé un login unique pour votre utilisateur) :
md5(uniqid($your_user_login, true))
Cette fonction permet de générer une clé aléatoire à l'aide de chiffres et de lettres :
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);
Exemple de sortie :
zsd16xzv3jsytnp87tk7ygv73k8zmr0ekh6ly7mxaeyeh46oe8
par exemple (en pseudo-code)
int myInt = random(0, numcharacters)
char[] codealphabet = 'ABCDEF12345'
char random = codealphabet[i]
repeat until long enough