8721 sujets

Développement web côté serveur, CMS

Bonjour,
J'ai un système d'enregistrement sur ma page d'accueil.
Il fonctionne de cette manière :
- Le formulaire d'enregistrement apparaît
- Si ses inputs renvoient un isset true, une variable $i est def sur 0 ($i = 0)
- A chaque erreur détectée (email déjà existant, oubli d'un champ...) $i s'incrémente
- Si $i=0 a la fin du processus de vérification, alors le formulaire passe en display: none et
un autre formulaire apparaît. (Celui ci est directement dans le if).

<?php if ($i === 0 || isset($_POST['date'])) { ?>
      <div class="validation">
          <h1 class="validationtitle">Validation par mail</h1>
          <form action="" method="POST">
          <fieldset class="validationfield">
              <legend>Entrez le code reçu par mail</legend>
              <div>
              <input id="default" type="text" name="validationcode" placeholder="code">
              <input type="hidden" name="date" value="<?php date('Y-m-d') ?>">
              </div>
              <div>
              <input class="submitvalidation" type="submit" value="Valider">
              </div>
          </fieldset>
      </div><?php
      $display='none';
} 
else {
    $display ='block';
}?>


- Il y a donc rafraîchissement de la page. Si l'utilisateur se trompe de code, la page se rafraîchira pour afficher une erreur et la variable $i ne sera plus définie. J'ai donc rajoutée une condition qui est qu'un champ hidden de cet autre formulaire soit isset.
- Cet autre formulaire est la validation par mail. Si le code rentré est le même que celui envoyé. Les informations, précédemment stockées dans des variables sont envoyées à la bdd.

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