Je construis un système de vote en ligne et par courrier en PHP/Laravel qui nécessite un jeton d'accès qui doit être saisi par une personne à un moment donné, soit l'utilisateur réel ou un administrateur. En tant que tel, je suppose que le jeton doit être généré et non traçable à l'utilisateur d'origine via des vidages de base de données.Comment générer des codes d'accès lisibles par l'homme?
Quelle serait la meilleure façon de générer un tel code? J'ai regardé Hashids, mais je ne sais pas si cela serait une solution appropriée, à moins que ce soit bien d'utiliser l'horodatage de la création du bulletin de vote en secondes comme seconde valeur à utiliser avec l'ID du bulletin.
Si je comprends bien la question que je crois que vous voulez utiliser 'password_encrypt()' avec 'uniqid()' .Vous ajouter la 'password_encrypt() 'ed string que' uniqid() 'génère dans une base de données comme code d'accès que l'utilisateur/administrateur obtiendrait, et quand l'utilisateur/administrateur le saisira, utilisera' password_verify() 'pour vérifier qu'il correspond au champ dans la base de données. – Alesana
@Alesana: C'est une bonne idée, mais le problème avec 'uniqid()' est qu'il est assez long. Je doute que les utilisateurs ciblés veuillent picorer 13 lettres et chiffres avant de marquer leurs bulletins de vote en ligne ou l'administrateur (s) de la même manière lorsqu'ils reçoivent potentiellement plus de 30 bulletins de vote qu'ils doivent entrer manuellement. – Mark
Si vous voulez un identifiant plus court, vous pouvez le faire avec un faible risque de collision (la probabilité que deux identifiants soient les mêmes), mais les risques de collision sont toujours présents. Je recommanderais d'utiliser une fonction de hachage avec l'alogorithme crc32b pour générer un code de 8 caractères. Par exemple, 'hash ('crc32b', uniqid());' – Alesana