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:
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
).
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.
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.