Utiliser variable dans formulaire

Eléphant du PHP | 194 Messages

06 déc. 2023, 19:53

Bonjour à tous,

Je but sur un truc tout bête je pense.
Je suis entrain de faire une page de déblocage de compte client.
La personne recoit un mail, a partir de ce mail cela la renvoie sur le site pour réactiver son compte.
Dans url il y a un token pour retrouver le compte.
Par rapport a ce token il y a certain controle et une fois les controle fait je valide un formulaire ou l'utilisateur met son mail afin de voir si il correspond a celui du token.
Le soucis je ne parviens pas a utiliser les variables dans mon formulaire, alors qu'avant le formulaire j'arrive a les manipulées.
J'ai essayer d'utiliser les sessions mais cela ne fonctionne pas.
Pourriez-vous m'aider ?
J'utilise l'architecture MVC.

Code : Tout sélectionner

<?php session_start(); // initialise la session require_once(dirname(__FILE__).'/../Configuration/config.php'); require_once(dirname(__FILE__) . '/../Modeles/Utilisateur.php'); //Fichier pour envoi de mail en local et en prod require_once(dirname(__FILE__).'/../Public/Utiles/phpmailer.php'); $code = ''; $controleRole = 6; // var_dump($controleRole); // exit; // compte debloquer code 71 // Recuperer le token envoyer par mail $tokenMail = filter_input(INPUT_GET, 'token', FILTER_SANITIZE_STRING); // var_dump($tokenMail); // exit; // Enlever le code de securite brut 13A5 Supprimer les 4 derniers caractères $tokenMailSansCode = substr($tokenMail, 0, -4); // var_dump($tokenMailSansCode); // exit; // Vérifier si le token existe dans la table des utilisateurs $utilisateur = Utilisateurs::getUtilisateurByToken($tokenMailSansCode); if ($utilisateur) { // Récupérer la propriété IdRole associée au token $idRole = $utilisateur->getIdRole(); // var_dump($idRole); // exit; // Vérifier différentes conditions pour définir la variable $code if ($idRole > $controleRole) { // IdRole est supérieur à $controleRole $code = '4'; } elseif ($idRole >= 1 && $idRole <= 5) { // IdRole est compris entre 1 et 5 inclus $code = '27'; // Vous pouvez ajouter d'autres actions à effectuer ici } else { // Autres cas si =6 $code = ''; } } else { // Le token n'existe pas dans la table des utilisateurs $code = '4'; // echo "Token non valide."; } if ($utilisateur) { // Récupérer l'adresse e-mail associée au token $adresseMail = $utilisateur->getMail(); // Faire quelque chose avec l'adresse e-mail récupérée // echo "Adresse e-mail associée au token : " . $adresseMail; } else { // Le token n'existe pas dans la table des utilisateurs // echo "Token non valide."; } // var_dump($adresseMail); // exit; // // Initialiser les variables de session // $_SESSION['tokenMail'] = $tokenMail; // $_SESSION['tokenMailSansCode'] = $tokenMailSansCode; // $_SESSION['utilisateur'] = $utilisateur; // // Vérifiez si les variables de session existent // $tokenMailSession = isset($_SESSION['tokenMail']) ? $_SESSION['tokenMail'] : null; // $tokenMailSansCodeSession = isset($_SESSION['tokenMailSansCode']) ? $_SESSION['tokenMailSansCode'] : null; // $utilisateurSession = isset($_SESSION['utilisateur']) ? $_SESSION['utilisateur'] : null; // // Nettoyez les variables si nécessaire // $tokenMailSession = filter_var($tokenMailSession, FILTER_SANITIZE_STRING); // $tokenMailSansCodeSession = filter_var($tokenMailSansCodeSession, FILTER_SANITIZE_STRING); // Faire la suite // On vérifie que le formulaire est envoyé if ($_SERVER['REQUEST_METHOD'] == 'POST') { var_dump($idRole); exit; // Utilisez les variables de session pour le traitement du formulaire //var_dump($_SESSION['idRoleBase']); // var_dump($tokenMailSansCode); var_dump($_SESSION['idRoleBase']); // Ajoutez cette ligne pour utiliser la variable de session exit; // Enlever le code de securite brut 13A5 Supprimer les 4 derniers caractères $tokenMailSansCode = substr($tokenMail, 0, -4); var_dump($tokenMailSansCode); exit; // Vérifier si le token existe dans la table des utilisateurs $utilisateur = Utilisateurs::getUtilisateurByToken($tokenMailSansCode); $adresseMail = strtolower($utilisateur->getMail()); //Mail Nettoyage et validation $mailEnvoye = strtolower(trim(filter_input(INPUT_POST, 'mail', FILTER_SANITIZE_STRING))); var_dump($adresseMail); var_dump($mailEnvoye); exit; // Vérifier si $adresseMail est identique à $mailEnvoye if ($adresseMail === $mailEnvoye) { // Faire quelque chose car les adresses e-mail sont identiques // ... } else { // Les adresses e-mail ne sont pas identiques, gérer cela si nécessaire // ... } } include(dirname(__FILE__).'/../Vues/deblocageCompte.php');
Quand j'envoie mon formulaire la le vardump me renvois null alors qu'avant le formulaire le vardump fonctionne et me renvoi les bonnes infos.

Merci par avance pour votre aide.
@+ Filou

Mammouth du PHP | 2703 Messages

06 déc. 2023, 20:00

quel est le code html du formulaire généré par le php ?

Eléphant du PHP | 194 Messages

06 déc. 2023, 20:04

Voici ma page html :

Code : Tout sélectionner

<?php ob_start(); ?> <!-- Debut code message erreur --> <div class="container"> <div class="row justify-content-center my-2"> <?php if($code) :?> <div class="col-10 text-center h5 alert mt-3 <?= $messageCode[$code]['type'] ?> message-autohide"> <?= $messageCode[$code]['msg'] ?> <span class="close-icon">&times;</span> <!-- Ajout de la croix de fermeture --> </div> <?php endif ?> </div> </div> <!-- Fin code message erreur --> <!-- Titre --> <div class="container"> <div class="row justify-content-center"> <div class="col-10"> <div class="mt-3"> <h1>Deblocage compte</h1> </div> </div> </div> </div> <div class="container"> <div class="row justify-content-center my-5"> <div class="col-10 col-lg-10 connexion pt-1 mb-5"> <form action="<?=htmlspecialchars($_SERVER['PHP_SELF'])?>" method="post"> <div class="col-8 input-group mb-3"> <div class="input-group-text iconesConnexionInscription"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-envelope" viewBox="0 0 16 16"> <path d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4zm2-1a1 1 0 0 0-1 1v.217l7 4.2 7-4.2V4a1 1 0 0 0-1-1H2zm13 2.383-4.758 2.855L15 11.114v-5.73zm-.034 6.878L9.271 8.82 8 9.583 6.728 8.82l-5.694 3.44A1 1 0 0 0 2 13h12a1 1 0 0 0 .966-.739zM1 11.114l4.758-2.876L1 5.383v5.73z"/> </svg> </div> <input type="email" class="persoConnexionInscription form-control" placeholder="Mail*" name="mail" id="mail" required> <div class="error"><?= htmlentities($error['mail'] ?? '', ENT_QUOTES, 'UTF-8')?></div> </div> <div class="text-end mb-3"><button type="submit" name="validation" value="1" class="btn btn-outline-success">Envoyer</button></div> </form> <div class="d-flex justify-content-start"> <p>* Champs obligatoire</p> </div> </div> </div> <?php $content = ob_get_clean(); $titlePage = 'Deblocage Compte'; /// Titre à la page onglet /// $metaDescription =''; /// Permet d'ajouter une description d'une page affichée, et permet ainsi d'informer les moteurs de recherche ainsi que les internautes du contenu dont parle la page /// $metaKeywords =''; /// Définir leurs mots-clés pour un programme de recherche ex: référencement, SEO, balise meta keywords /// $title = ''; /// Titre de la page /// $css = 'accueil'; /// Mettre le CSS a utilisé acceuil - connecter /// include(dirname(__FILE__).'/Modeles/nonConnecter.php'); ?>

Mammouth du PHP | 2703 Messages

06 déc. 2023, 20:09

$tokenMail = filter_input(INPUT_GET, 'token', FILTER_SANITIZE_STRING);
que contient cette variable dans les 2 cas (clic depuis l'email, depuis le formulaire) ?

Eléphant du PHP | 194 Messages

06 déc. 2023, 20:11

cela contiens le mail de la personne a debloquer via la recupération avec le token dans la base de donnée.

Mammouth du PHP | 2703 Messages

06 déc. 2023, 20:13

quel est le code html du formulaire généré par le php ?

$tokenMail = filter_input(INPUT_GET, 'token', FILTER_SANITIZE_STRING);
que contient cette variable dans les 2 cas (clic depuis l'email, depuis le formulaire) ?

Eléphant du PHP | 194 Messages

06 déc. 2023, 20:17

Moi le formulaire renvois que le mail du compte a restauré