[RESOLU] Affiche bonne div apres validation

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Affiche bonne div apres validation

Re: Affiche bonne div apres validation

par filou80 » 21 avr. 2024, 09:47

Bonjour,

j'ai tenté plein de chose en vain:

dans mon contrôleur j'ai mis ceci :

Code : Tout sélectionner

if(!empty($error)){ $inscriptionEchouee = true; } else { $inscriptionEchouee = false; } }
et apres :

<div class="form-wrapper <?= $inscriptionEchouee ? 'is-active' : '' ?>">

avec ceci cela fonctionne.

Merci par avance pour vos retours qui m'ont aider dans la démarche de logique.
@+ Filou80

Re: Affiche bonne div apres validation

par filou80 » 21 avr. 2024, 00:16

Je ne parviens pas faire la sélection.
C’est le java script je pense qui me gêne.
Le js je ne suis vraiment pas alaise avec.

Merci pour vos retours .
@+ Filou80

Re: Affiche bonne div apres validation

par two3d » 20 avr. 2024, 18:34

Je penses que si tu utilise un système MVC, tu arrivera à implanter une simple condition PHP comme je t'ai passé...

Si ton formulaire "connexion" est envoyé tu traite les champs "connexion" (inversement pour le formulaire inscription) et bien fais en sorte de repérer quel formulaire a été envoyé et de rediriger en conséquence.

Re: Affiche bonne div apres validation

par filou80 » 20 avr. 2024, 18:23

Merci pour votre retour.
Comment faire cela ?

Car quand je recharge ma page c’est toujours la connexion qui apparaît .

Je ne vois pas comment faire cela .

Merci par avance pour vos retours.
@+ Filou80

Re: Affiche bonne div apres validation

par two3d » 20 avr. 2024, 11:08

dans le code HTML/PHP tu peux faire une vérification de quel formulaire a été envoyé et d'afficher le <form> correspondant :
if(isset($_POST['mdpInscription'])){
//afficher le form inscription
}

Affiche bonne div apres validation

par filou80 » 20 avr. 2024, 08:28

Bonjour à tous,

Je suis entrain de refaire ma page de connexion inscription (1 page pour les 2).
Mon soucis c'est quand je valide une inscription et qu'il y a une erreur elle me recharge bien la page mais c'est mon inscription en premier.
Alors que je souhaite que se soit inscription qui reviens en sachant que je souhaite de base lors que l'internaute arrive pour une première fois se soit la connexion.

Je ne sais pas si je suis clair.

Voici ma vue :

Code : Tout sélectionner

<?php ob_start(); ?> <!-- Titre --> <!-- <div class="container"> <div class="row justify-content-center"> <div class="col-10"> <div class="mt-3"> <h1>Connexion | Inscription</h1> </div> </div> </div> </div> --> <section class="forms-section"> <div class="forms"> <div class="form-wrapper is-active"> <button type="button" class="switcher switcher-login texte"> Connexion <span class="underline"></span> </button> <form class="form form-login" action="<?=htmlspecialchars($_SERVER['PHP_SELF'])?>" method="post" enctype="multipart/form-data"> <fieldset> <legend>Please, enter your email and password for login.</legend> <div class="input-block"> <label for="login-email">Mail</label> <input id="mailConnexion" name="mailConnexion" type="email" value="<?= htmlentities($_POST['mailConnexion'] ?? '', ENT_QUOTES, 'UTF-8') ?>" required> </div> <div class="error mb-3"><?= htmlentities($error['mailConnexion'] ?? '', ENT_QUOTES, 'UTF-8')?></div> <div class="input-block"> <label for="login-password">Mot de passe</label> <input id="mdpConnexion" name="mdpConnexion" type="password" maxlength="20" value="<?= htmlentities($_POST['mdpConnexion'] ?? '', ENT_QUOTES, 'UTF-8') ?>" required> </div> <div class="error mb-3"><?= htmlentities($error['mdpConnexion'] ?? '', ENT_QUOTES, 'UTF-8')?></div> </fieldset> <!-- On envoie le token de session pour eviter les attaques --> <input type="hidden" name="csrfToken" value="<?= $csrfToken ?>"> <div class = "text-center"> <button type="submit" name = "validation" value = "Connexion" class="btn btn-outline-success">Connexion</button> </div> </form> </div> <div class="form-wrapper"> <button type="button" class="switcher switcher-signup" > Inscription <span class="underline"></span> </button> <form class="form form-signup" action="<?=htmlspecialchars($_SERVER['PHP_SELF'])?>" method="post" enctype="multipart/form-data"> <fieldset> <legend>Please, enter your email, password and password confirmation for sign up.</legend> <div class="input-block"> <label for="signup-email">Mail</label> <input id="mailInscription" name="mailInscription" type="email" required> </div> <div class="error mb-3"><?= htmlentities($error['mailInscription'] ?? '', ENT_QUOTES, 'UTF-8')?></div> <div class="input-block"> <label for="signup-email">Confirmation du Mail</label> <input id="confirmationMailInscription" name="confirmationMailInscription" type="email" required> </div> <div class="error mb-3"><?= htmlentities($error['confirmationMailInscription'] ?? '', ENT_QUOTES, 'UTF-8')?></div> <div class="input-block"> <label for="signup-password">Mot de passe</label> <input id="mdpInscription" name="mdpInscription" type="password" maxlength="20" required> </div> <div class="error mb-3"><?= htmlentities($error['mdpInscription'] ?? '', ENT_QUOTES, 'UTF-8')?></div> <div class="input-block"> <label for="signup-password-confirm">Confirmation mot de passe</label> <input id="confirmationMdpInscription" name="confirmationMdpInscription" type="password" maxlength="20" required> </div> <div class="error mb-3"><?= htmlentities($error['confirmationMdpInscription'] ?? '', ENT_QUOTES, 'UTF-8')?></div> <!-- On envoie le token de session pour eviter les attaques --> <input type="hidden" name="csrfToken" value="<?= $csrfToken ?>"> </fieldset> <div class = "text-center"> <button type="submit" name = "validation" value = "Inscription"class="btn btn-outline-success">Inscription</button> </div> </form> </div> </div> </section> <?php $content = ob_get_clean(); $titrePage = 'Connexion | Inscription'; /// Titre à la page onglet /// $metaDescription = "Inscrivez-vous ou connectez-vous pour accéder à notre plateforme. Profitez d'une expérience utilisateur exceptionnelle."; $metaKeywords = "inscription, connexion, compte utilisateur, plateforme, expérience utilisateur"; $google = "index, follow"; /// Demander a google de ne pas suivre ou suivre include(dirname(__FILE__).'/../Modeles/vueBase.php'); ?>


Voici mon contrôleur :

Code : Tout sélectionner

<?php // Vérifier si la requête est effectuée via HTTPS if (!isset($_SERVER["HTTPS"]) || $_SERVER["HTTPS"] !== "on") { // Rediriger vers la même URL en utilisant HTTPS header("Location: https://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]); // Arrêter le script pour éviter toute autre exécution exit(); } // Redémarrez une nouvelle session si elle n'est pas déjà active if (session_status() !== PHP_SESSION_ACTIVE) { session_start(); } // Génère un jeton CSRF aléatoire s'il n'existe pas déjà dans la session if (!isset($_SESSION['csrfToken'])) { $csrfToken = bin2hex(random_bytes(32)); $_SESSION['csrfToken'] = $csrfToken; } else { // Si le jeton CSRF existe déjà dans la session, utilisez-le $csrfToken = $_SESSION['csrfToken']; } // Pour utiliser le CSS lié à la page de connexion $css = ''; // Pour afficher le menu et le pied de page connectés ou non connectés $affichage = "nonConnecter"; // Vérifier si le formulaire est soumis if ($_SERVER['REQUEST_METHOD'] == 'POST') { // Vérifier le jeton CSRF if (!isset($_POST['csrfToken']) || $_POST['csrfToken'] !== $_SESSION['csrfToken']) { // Jeton CSRF invalide, redirection vers la page d'erreur $code = 4; header('Location: erreurs-ctrl.php?code=' . $code); exit; // Assurez-vous de terminer le script après la redirection } else { $validation = trim(filter_input(INPUT_POST, 'validation', FILTER_SANITIZE_STRING)); switch ($validation) { case "Connexion": //Connexion // Champ mail $mailConnexion = trim(strtolower(filter_input(INPUT_POST, 'mailConnexion', FILTER_SANITIZE_EMAIL))); if (empty($mailConnexion)) { $error["mailConnexion"] = 'Le mail est obligatoire.'; } // Mot de passe connexion $mdpConnexion = trim(filter_input(INPUT_POST, 'mdpConnexion', FILTER_SANITIZE_STRING)); if (empty($mdpConnexion)) { $error["mdpConnexion"] = 'Mot de passe obligatoire.'; } elseif (strlen($mdpConnexion) > 20) { $error["mdpConnexion"] = 'Le mot de passe ne doit pas dépasser 20 caractères.'; } elseif (!preg_match('/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/', $mdpConnexion)) { $error["mdpConnexion"] = 'Mot de passe incorrect.'; } if(empty($error)){ $code = 1; header('Location: erreurs-ctrl.php?code=' . $code); exit; // Assurez-vous de terminer le script après la redirection } break; case "Inscription": //Inscription // Champ mail Inscription $mailInscription = trim(strtolower(filter_input(INPUT_POST, 'mailInscription', FILTER_SANITIZE_EMAIL))); if (empty($mailInscription)) { $error["mailInscription"] = 'Le mail est obligatoire.'; } // Confirmation mail inscription $confirmationMailInscription = trim(strtolower(filter_input(INPUT_POST, 'confirmationMailInscription', FILTER_SANITIZE_EMAIL))); if (empty($confirmationMailInscription)) { $error["confirmationMailInscription"] = 'Le mail est obligatoire.'; } if($mailInscription !== $confirmationMailInscription) { $error["mailInscription"] = 'Les adresses e-mail ne correspondent pas.'; $error["confirmationMailInscription"] = 'Les adresses e-mail ne correspondent pas.'; } // Mot de passe inscription $mdpInscription = trim(filter_input(INPUT_POST, 'mdpInscription', FILTER_SANITIZE_STRING)); if (empty($mdpInscription)) { $error["mdpInscription"] = 'Mot de passe obligatoire.'; } elseif (strlen($mdpInscription) > 20) { $error["mdpInscription"] = 'Le mot de passe ne doit pas dépasser 20 caractères.'; } elseif (!preg_match('/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/', $mdpInscription)) { $error["mdpInscription"] = 'Mot de passe incorrect.'; } // Confirmation mdp inscription $confirmationMdpInscription = trim(filter_input(INPUT_POST, 'confirmationMdpInscription', FILTER_SANITIZE_STRING)); if (empty($confirmationMdpInscription)) { $error["confirmationMdpInscription"] = 'Mot de passe obligatoire.'; } elseif (strlen($confirmationMdpInscription) > 20) { $error["confirmationMdpInscription"] = 'Le mot de passe ne doit pas dépasser 20 caractères.'; } elseif (!preg_match('/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/', $confirmationMdpInscription)) { $error["confirmationMdpInscription"] = 'Mot de passe incorrect.'; } if($mdpInscription !== $confirmationMdpInscription) { $error["mdpInscription"] = 'Les mots de passe ne correspondent pas.'; $error["confirmationMdpInscription"] = 'Les mots de passe ne correspondent pas.'; } if(empty($error)){ $code = 9; header('Location: erreurs-ctrl.php?code=' . $code); exit; // Assurez-vous de terminer le script après la redirection } break; } // Fin du switch validation } // Fin de la condition du contrôle de variable } // Fin du post include(dirname(__FILE__).'/../Vues/Vues/connexion.php'); ?>
et pour finir mon js ou je suis nul mais nul :

Code : Tout sélectionner

const switchers = [...document.querySelectorAll('.switcher')] switchers.forEach(item => { item.addEventListener('click', function() { switchers.forEach(item => item.parentElement.classList.remove('is-active')) this.parentElement.classList.add('is-active') }) })
Merci par avance pour votre aide.
@+ Filou80