Bonjour,
J'ai un système d'enregistrement sur ma page d'accueil.
Il fonctionne de cette manière :
Problème :
Les variables ayant stockées les données de l'utilisateur n'existent plus lors de la validation par mail.
Hypothèse:
Lorsque la page se rafraîchit pour que le formulaire de validation par mail apparaisse, les variables ayants stockées les données utilisateurs sont supprimées du fait du rafraîchissement.
Impossible de stocker ces variables dans un cookie car l'utilisateur pourrait les modifier après le processus de vérifications des erreurs.
Le problème est que je suis obligé de créer deux formulaires si je veux une validation par mail. Hors je ne peux pas présenter le formulaire de validation par mail avant même que l'utilisateur n'ai rentré ses informations.
Je pourrais envoyer les informations à la bdd dès l'envoi du premier formulaire. Avec une ligne "account_validate" portant la valeur 0 et 1 après l'envoi du second formulaire. Sauf que si je fais ça, même les comptes non validés occuperont la place d'un email ou d'un nom d'utilisateur. (renvoyant l'erreur "email déjà utilisé").
cordialement,
Mattéo Goudin
Bonjour.
Le plus simple est qu'à la validation du premier formulaire, du sauvegardes les données en BDD an ajoutant un champ token par exemple que tu génères juste avant de sauvegarder en BDD, tu envoies le mail avec un lien vers une page qui aura dans le lien le token envoyé par mail, lors de sa confirmation, tu fais la vérification du token s'il appartient bien à un compte utilisateur, si c'est le cas tu passes le champ token à NULL
, par conséquence pour la connexion de l'utilisateur tu vérifies si le champ token est bien à NULL
.
Sauf que si je fais ça, même les comptes non validés occuperont la place d'un email ou d'un nom d'utilisateur. (renvoyant l'erreur "email déjà utilisé").
Il te suffit par exemple d'ajouter un champ dans la table qui serait de type DATETIME
, qui lorsqu'un enregistrement est sauvegardé (et non modifié) aurait le DATETIME
du moment de la sauvegarde, ensuite tu n'as plus qu'à faire un CRONJOB tous les 48h ou 72h (par exemple) et qui ciblerait un script qui vérifierait si dans la table de la BDD, s'il y a des enregistrement dont le champ token n'est pas à NULL
et qui aurait un DATETIME
dont la valeur est > au délai fixé, de cette manière si le script en récupère lors de la requête SQL, il supprime les enregistrements correspondants, par conséquent tu libèreras des enregistrements de comptes qui n'auront pas été confirmés dans le délai fixé.
Tu peut pas passer par de l'ajax pour gérer tes formulaires? au moins ta page n'est pas recharger, tu peut perssister localement les data dans ton script js et valider à la volé les infos