Le contenu partagé avec vous dans cet article concerne l'analyse de la génération de jetons en PHP. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Souvent, nous devons utiliser des jetons comme identifiants, tels que : un identifiant d'authentification après la connexion d'un utilisateur.
$v = 1; // 自己定义的 需要hash 的value 值 $key = mt_rand(); // 这里用 随机串作为key $hash = md5($key . $v . mt_rand() . time()); echo $hash;
Résultat de l'exécution : b63426a38f86b726ce0d327d48e47376
Cela n'a pas l'air très confortable, et en tant que trouble obsessionnel-compulsif, je ne le supporte pas.
$v = 1; $key = mt_rand(); $hash = md5($key . $v . mt_rand() . time()); $token = base64_encode($hash); echo $token;
Résultat de l'exécution : MWQyMjE2NmI3NDA1MmRjZTQwOTQzZDZjMWU1OTE5OGU=
Cela a l'air un peu plus confortable, mais pas assez bon. Par contre, l'openid de WeChat n'a généralement pas ce qui suit. = sign
Optimisation
$v = 1; $key = mt_rand(); $hash = md5($key . $v . mt_rand() . time()); $token = str_replace('=', '', base64_encode($hash)); echo $token;
Résultat de l'exécution : Yzg4MWU0OTQ0MTRiZTI0YWYwMDJjOTYyODBkNjFmMTM
Il n'y a pas de signe = maintenant, ce qui est plus confortable, mais il est trop long. L'openid de WeChat n'est pas si long
$v = 1; $key = mt_rand(); $hash = hash_hmac("sha1", $v . mt_rand() . time(), $key, true); $token = str_replace('=', '', base64_encode($hash)); echo $token;
est plus court, mais il contient un signe +/ Dans de nombreux cas, il sera urlcodé lorsqu'il sera passé par get , c'est ce qui se passe après l'urlcoding 7pn0pWzO+/TOoISNtDaewa4CyuXw
, ce n'est évidemment pas ce que nous voulons 7pn0pWzO%2b%2fTOoISNtDaewa4CyuXw
$v = 1; $key = mt_rand(); $hash = hash_hmac("sha1", $v . mt_rand() . time(), $key, true); $token = str_replace('=', '', strtr(base64_encode($hash), '+/', '-_')); echo $token;
Je ne peux pas coder l'url cette fois, c'est normal de le regarder. C'est plus confortable. C'est ce que j'utilise maintenant...JM9AkY7SAIROrJ7fhjIU2ApbMsI
Traitement de la file d'attente php : principe d'implémentation de la file d'attente de messages PHP (images et texte)
Comment comprendre les classes abstraites et les méthodes abstraites en PHP ? (Avec code)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!