web-dev-qa-db-fra.com

Quel est le moyen le plus rapide de générer un numéro d'identification unique lors de l'enregistrement d'un utilisateur

J'ai un client qui souhaite enregistrer des utilisateurs et leur attribuer un numéro d'identification unique lors de l'enregistrement. (Genre de numéro de membre)

Puis-je simplement configurer la table des membres WP pour qu'elle commence les numéros d'identification dans la plage des 10 chiffres les plus élevés?

L'expérience utilisateur serait:

  1. l'utilisateur visiterait le site
  2. l'utilisateur s'enregistrerait
  3. WP émettrait un numéro d'identification à 10 chiffres
1
Nohl

La colonne ID de la table users est AUTO_INCREMENT. Vous pouvez donc définir le compteur de base sur un nombre élevé :

ALTER TABLE wp_users AUTO_INCREMENT = 1000000000;

Tous les nouveaux utilisateurs auront une ID supérieure à cette valeur. L'appel de cette opération est sécurisé. Si vous le définissez accidentellement sur un nombre faible, rien ne se passe (dans une table InnoDB) ou le nombre le plus élevé existant + 1 (dans une table MyISAM).

3
Jan Fabry

Le champ ID fonctionnera certainement. Si vous voulez un plus grand nombre, vous pouvez simplement ajouter 10 000 et il restera unique.

D'autres façons de faire cela s'impliquent davantage. Vous pouvez stocker une valeur dans la table wp_options, puis extraire, incrémenter, enregistrer, mais vous disposez d'une petite fenêtre d'opportunité dans laquelle deux personnes peuvent se retrouver avec le même nombre. Vous devez donc vérifier et répéter si collision. Vous pouvez générer des hachages MD5 (ou SHA1) à partir de certaines informations utilisateur choisies, mais cela vous donnera une grosse chaîne de caractères. Cela peut être utile lors de la génération d'un UUID (ID unique universel) sur plusieurs systèmes car les risques de collision sont extrêmement faibles.

2
Peter Rowell

Je suppose qu’il serait également facile de s’inscrire au processus d’enregistrement (les données préalables seront soumises à la base de données) et de changer simplement la colonne user_registered de la table wp_usermeta avec un preg_replace pour les espaces vides. Ils seraient uniques tant que vous ne les soumettez pas dans la même seconde. La valeur ne sera jamais modifiée par quiconque après le processus d’enregistrement + cela permettrait de commander par date d’enregistrement si vous en aviez besoin.

0
kaiser