fabi00
Messages postés82Date d'inscriptionvendredi 4 février 2022StatutMembreDernière intervention18 mars 2022
-
9 févr. 2022 à 14:25
fabi00
Messages postés82Date d'inscriptionvendredi 4 février 2022StatutMembreDernière intervention18 mars 2022
-
10 févr. 2022 à 13:05
Bonjour à tous ^^,
Je suis amené à créer un formulaire de devis, qui est plutôt fonctionnel pour le moment. Depuis hier je suis acharné sur une chose que je n'arrive pas à faire. Donc voilà le fonctionnement de mon formulaire, c'est un formulaire qui est uniquement sur une page "index .php". Lorsque j'appuie sur le "bouton" (le lien) -> Devis exprès, ça m'ouvre une fenêtre modale avec un formulaire. Si j'appuie sur le bouton "suivant", un autre formulaire s'ouvre et etc. etc.
mon formulaire mémorise à l'aide de sessions, les valeurs que l'utilisateur entre dans le but qu'il puisse revenir en arrière et en avant et de ne pas perdre ce qu'il a écrit.
Cependant, je souhaiterais que lorsque l'utilisateur coupe la page, ou qu'il appuie sur le lien qui permet de fermer la fenêtre modale, la session détruise toutes les données enregistrées.
Je sais que je peux utiliser "session_destroy" ou "session_unset", mais je ne sais pas ou le placer...
Comment pourrais-je m'y prendre ?
Je ne sais pas si c'est compréhensible ce que je dis, autrement n'hésitez pas à me demander plus de précisions.
Un grand merci d'avance.
Voici le code...
<?php//On démarre une nouvelle sessionsession_start();//Formulaire 1//Si on appuie sur le bouton "suivant"if(isset($_POST['suivant'])){//On récupère les données dans $_POST$modele=$_POST['modele'];$taille=$_POST['taille'];$couleur=$_POST['couleur'];$quantite=$_POST['quantite'];//On définit des variables de session$_SESSION['modele']=$modele;$_SESSION['taille']=$taille;$_SESSION['couleur']=$couleur;$_SESSION['quantite']=$quantite;//Si on ne sélectionne pas une quantitéif($quantite== false){$afficheErreur1="<h4>Veuillez ajouter une quantité</h4>";}else{// On va sur le formulaire 2header('Location: #demo2');die();}}//Formulaire 2//Si on appuie sur le bouton "suivant"if(isset($_POST['suivant1'])){//On récupère les données dans $_POST$qualite=$_POST['qualite'];$zone=$_POST['zone'];$impression=$_POST['impression'];$fichier=$_POST['fichier'];// On va sur le formulaire 3header('Location: #demo3');//On définit des variables de session$_SESSION['qualite']=$qualite;$_SESSION['zone']=$zone;$_SESSION['impression']=$impression;$_SESSION['fichier']=$fichier;}//Si on appuie sur le bouton "Précèdent"if(isset($_POST['retour1'])){// On va sur la formulaire 1header('Location: #demo1');die();}//Formulaire 3 //Si on appuie sur le bouton "suivant"if(isset($_POST['suivant2'])){//On récupère les données dans $_POST$prenom=$_POST['prenom'];$nom=$_POST['nom'];$email=$_POST['email'];$telephone=$_POST['telephone'];$client=$_POST['client'];$precision=$_POST['precision'];$_SESSION['prenom']=$prenom;$_SESSION['nom']=$nom;$_SESSION['email']=$email;$_SESSION['telephone']=$telephone;$_SESSION['client']=$client;$_SESSION['precison']=$precision;if($prenom== false ||$nom== false ||$email== false ||$telephone== false){$afficheErreur2="<h4>Veuillez compléter les champs obligatoires *</h4>";}else{header('Location: recupDataTest.php');}}//Si on appuie sur le bouton "Précèdent"if(isset($_POST['retour2'])){// On va sur la page "index.php"header('Location: #demo2');die();}?><!DOCTYPE htlm><html lang="fr"><head><meta charset="utf-8"/><meta http-equiv="X_UA-Compatible" content="IE=edge"><title>Formulaire de devis</title><style>#quantite{
width:3.5em;}
select option[value="bleu"]{
background: blue;}
select option[value="rouge"]{
background: red;}
select option[value="vert"]{
background: green;}
h4{
color: red;}
a {
text-decoration: none;
padding: 15px;
background-color: white;
border-radius: 5px;
text-transform: uppercase;
color: black;
border: solid black;}
a:hover{
background-color: black;
color: white;}.modal1 {
visibility: hidden;
opacity:0;
position: absolute;
top:0; right:0;
bottom:0; left:0;
display: flex;
align-items: center;
justify-content: center;
background:rgba(77,77,77,.7);
transition: all .4s;}.modal1:target {
visibility: visible;
opacity:1;}.modal_content1 {
border-radius: 4px;
position: relative;
width: 500px;
max-width:90%;
background: white;
padding:1.5em 2em;}.modal_close1 {
position: absolute;
top: 10px;
right: 10px;
color: grey;
text-decoration: none;}.modal2 {
visibility: hidden;
opacity:0;
position: absolute;
top:0; right:0;
bottom:0; left:0;
display: flex;
align-items: center;
justify-content: center;
background:rgba(77,77,77,.7);
transition: all .4s;}.modal2:target {
visibility: visible;
opacity:1;}.modal_content2 {
border-radius: 4px;
position: relative;
width: 500px;
max-width:90%;
background: white;
padding:1.5em 2em;}.modal_close2 {
position: absolute;
top: 10px;
right: 10px;
color: grey;
text-decoration: none;}.modal3 {
visibility: hidden;
opacity:0;
position: absolute;
top:0; right:0;
bottom:0; left:0;
display: flex;
align-items: center;
justify-content: center;
background:rgba(77,77,77,.7);
transition: all .4s;}.modal3:target {
visibility: visible;
opacity:1;}.modal_content3 {
border-radius: 4px;
position: relative;
width: 500px;
max-width:90%;
background: white;
padding:1.5em 2em;}.modal_close3 {
position: absolute;
top: 10px;
right: 10px;
color: grey;
text-decoration: none;}</style></head><body><a href="#demo1">Devis Express</a><!--Formulaire 1--><div id="demo1"class="modal1"><div class="modal_content1"><h1>Votre demande de devis</h1><p>Faite votre demande de devis en seulement quelques clics !</br></br></br></p><h2>Vos besoins(Total de 10 pièces minimum)</h2><form action="" method="post"><p><?php$modele=!empty($_SESSION['modele'])?$_SESSION['modele']: NULL;?><label for="modele">Modèle</label><select name="modele" id="modele"/><option value="T-shirts"<?phpecho$modele=="T-shirts"?"selected='selected' ":"";?>>T-shirts</option><option value="Sweat-shirts"<?phpecho$modele=="Sweat-shirts"?"selected='selected' ":"";?>>Sweat-shirts</option><option value="Pulls"<?phpecho$modele=="Pulls"?"selected='selected' ":"";?>>Pulls</option></select><label for="quantite">Quantité</label><input type="number" name="quantite" id="quantite" min="10" value="<?php if (isset($_SESSION['quantite'])){echo $_SESSION['quantite'];} ?>"/><br></br></p><p><?php$taille=!empty($_SESSION['taille'])?$_SESSION['taille']: NULL;?><label for="taille">Taille</label><select name="taille" id="taille"/><option value="XS"<?phpecho$taille=="XS"?"selected='selected' ":"";?>>XS</option><option value="S"<?phpecho$taille=="S"?"selected='selected' ":"";?>>S</option><option value="M"<?phpecho$taille=="M"?"selected='selected' ":"";?>>M</option><option value="L"<?phpecho$taille=="L"?"selected='selected' ":"";?>>L</option><option value="XL"<?phpecho$taille=="XL"?"selected='selected' ":"";?>>XL</option></select><?php$couleur=!empty($_SESSION['couleur'])?$_SESSION['couleur']: NULL;?><label for="couleur">Couleur</label><select name="couleur" id="couleur"><option value="bleu"<?phpecho$couleur=="bleu"?"selected='selected' ":"";?>>bleu</option><option value="rouge"<?phpecho$couleur=="rouge"?"selected='selected' ":"";?>>rouge</option><option value="vert"<?phpecho$couleur=="vert"?"selected='selected' ":"";?>>vert</option></select></p><p><input type="submit" name="suivant" value="Suivant"/></p><?php//Si le formulaire n'est pas rempli, on affiche le message d'erreurif(isset($afficheErreur1)){echo$afficheErreur1;}?></form><div class="fermer"><a href="#"class="modal_close1">×</a></div></div></div><!--Formulaire 2--><div id="demo2"class="modal2"><div class="modal_content2"><h1>Votre demande de devis</h1><p>Faite votre demande de devis en seulement quelques clics !</br></br></br></p><h2>Infos supplémentaires pour impression</h2><form action="" method="post"><p><?php$qualite=!empty($_SESSION['qualite'])?$_SESSION['qualite']: NULL;?><label for="qualite">Qualité</br></label><select name="qualite" id="qualite"><option value="Promotionnel/1er prix"<?phpecho$qualite=="Promotionnel/1er prix"?"selected='selected' ":"";?>>Promotionnel/1er prix</option><option value="Meilleur rapport qualité / prix"<?phpecho$qualite=="Meilleur rapport qualité / prix"?"selected='selected' ":"";?>>Meilleur rapport qualité / prix</option><option value="Haut de gamme"<?phpecho$qualite=="Haut de gamme"?"selected='selected' ":"";?>>Haut de gamme</option></select></p><p><?php$zone=!empty($_SESSION['zone'])?$_SESSION['zone']: NULL;?><label for="zone">Zone de personnalisation</br></label><select name="zone" id="zone"><option value="Coeur"<?phpecho$zone=="Coeur"?"selected='selected' ":"";?>>Coeur</option><option value="Dos"<?phpecho$zone=="Dos"?"selected='selected' ":"";?>>Dos</option><option value="Manche"<?phpecho$zone=="Manche"?"selected='selected' ":"";?>>Manche</option></select></p><p><label for="impression">Technique d'impression</br></label> <?php $impression = !empty($_SESSION['impression']) ? $_SESSION['impression']: NULL; ?> <select name="impression" id="impression"> <option value="DTG" <?php echo $impression=="DTG" ? "selected='selected' " : "" ;?>>DTG</option> <option value="Transfert quadri" <?php echo $impression=="Transfert quadri" ? "selected='selected' " : "" ;?>>Transfert quadri</option> <option value="Sérigraphie" <?php echo $impression=="Sérigraphie" ? "selected='selected' " : "" ;?>>Sérigraphie</option> <option value="Flex Flock" <?php echo $impression=="Flex Flock" ? "selected='selected' " : "" ;?>>Flex Flock</option> <option value="Broderie" <?php echo $impression=="Broderie" ? "selected='selected' " : "" ;?>>Broderie</option> <option value="Sublimation" <?php echo $impression=="Sublimation" ? "selected='selected' " : "" ;?>>Sublimation</option> </select> </p> <p> <label for="fichier">Importez vos fichiers ici</br></label> <input type="file" id="fichier" name="fichier" accept="image/png, image/jpeg, .ai, .eps, .pdf, .svg"> </p> <p> <input type="submit" name="retour1" value="Précèdent"/> <input type="submit" name="suivant1" value="Suivant"/> </p> </form> <a href="#" class="modal_close2">×</a> </div> </div> <!--Formulaire 3 --> <div id="demo3" class="modal3"> <div class="modal_content3"> <h1>Votre demande de devis</h1> <p>Faite votre demande de devis en seulement quelques clics !</br></br></br></p> <h2>Informations et précisions</h2> <form action="" method="post"> <p> <input type="text" name="prenom" id="prenom" placeholder="prénom*" value ="<?php if (isset($_SESSION['prenom'])){echo $_SESSION['prenom'];} ?>"/> <input type="text" name="nom" id="nom" placeholder="Nom*" value ="<?php if (isset($_SESSION['nom'])){echo $_SESSION['nom'];} ?>"/> <input type="email" name="email" id="email" size="30" placeholder="Adresse mail*" value ="<?php if (isset($_SESSION['email'])){echo $_SESSION['email'];} ?>"/> </p> <p> <input type="tel" id="telephone" name="telephone" placeholder="Téléphone*" value ="<?php if (isset($_SESSION['telephone'])){echo $_SESSION['telephone'];} ?>"/> <?php $client = !empty($_SESSION['client']) ? $_SESSION['client']: NULL; ?> <select name="client" id="client"> <option value="Particulier" <?php echo $client=="Particulier" ? "selected='selected' " : "" ;?>>Particulier</option> <option value="Entreprise" <?php echo $client=="Entreprise" ? "selected='selected' " : "" ;?>>Entreprise</option> <option value="Autre" <?php echo $client=="Autre" ? "selected='selected' " : "" ;?>>Autre</option> </select> </p> <p> <textarea id="precision" name="precision" rows="5" cols="40" placeholder="Précision"> <?php if (isset($_SESSION['precision'])){echo $_SESSION['precision'];} ?> </textarea> </p> <p> <input type="submit" name="retour2" value="Précèdent"/> <input type="submit" name="suivant2" value="Envoyer"/> </p> <?php //Si le formulaire n'est pas rempli, on affiche le message d'erreur if (isset($afficheErreur2)){ echo $afficheErreur2; } ?> </form> <a href="#" class="modal_close3">×</a> </div> </div></body></html>
A voir également:
Comment bien placer une session_destroy ou unset en PHP ?
yg_be
Messages postés23485Date d'inscriptionlundi 9 juin 2008StatutContributeurDernière intervention 8 mars 2025Ambassadeur1 569 9 févr. 2022 à 14:53
bonjour,
comment l'utilisateur coupe-t-il la page?
sur quel lien appuie-t-il pour fermer la fenêtre modale?
Il est souvent préférable de "vider" la session quand l'utilisateur revient sur un site, pas quand il le quitte.
Comment pourrais-tu faire la différence entre un utilisateur qui revient et un qui continue?
Sur base du temps écoulé, ou bien parce que l'utilisateur fait appel à une page spécifique?
yg_be
Messages postés23485Date d'inscriptionlundi 9 juin 2008StatutContributeurDernière intervention 8 mars 20251 569 9 févr. 2022 à 14:58
Tu pourrais peut-être vider la session quand l'utilisateur arrive sur le site en n'ayant cliqué aucun des boutons.
fabi00
Messages postés82Date d'inscriptionvendredi 4 février 2022StatutMembreDernière intervention18 mars 2022 9 févr. 2022 à 15:05
En effet, je pense qu'il est difficile de faire comprendre comment l'utilisateur coupe la page.
Mais pour couper la fenêtre modale c'est ce qui est en ligne 285, 347 et 397 "<a href="#" class="modal_close1">×</a>".
Et comment "vider" la session quand l'utilisateur revient sur le site ?
fabi00
Messages postés82Date d'inscriptionvendredi 4 février 2022StatutMembreDernière intervention18 mars 2022
>
yg_be
Messages postés23485Date d'inscriptionlundi 9 juin 2008StatutContributeurDernière intervention 8 mars 2025 9 févr. 2022 à 15:10
Et il faudrait le placer ou pour faire ça ?
yg_be
Messages postés23485Date d'inscriptionlundi 9 juin 2008StatutContributeurDernière intervention 8 mars 20251 569
>
fabi00
Messages postés82Date d'inscriptionvendredi 4 février 2022StatutMembreDernière intervention18 mars 2022 9 févr. 2022 à 15:15
Tu pourrais peut-être faire
$_SESSION=array();
quand l'utilisateur arrive sur le site en n'ayant cliqué aucun des boutons, donc après la ligne 89.
yg_be
Messages postés23485Date d'inscriptionlundi 9 juin 2008StatutContributeurDernière intervention 8 mars 20251 569
>
fabi00
Messages postés82Date d'inscriptionvendredi 4 février 2022StatutMembreDernière intervention18 mars 2022 9 févr. 2022 à 17:33
fabi00
Messages postés82Date d'inscriptionvendredi 4 février 2022StatutMembreDernière intervention18 mars 2022 Modifié le 10 févr. 2022 à 13:05
J'AI TROUVE LA SOLUTION !
Bon j'ai dû changer quelque petites choses, mais ça fonctionne maintenant ^^.
Voilà ce que j'ai fait, j'ai changé le lien pour fermer le formulaire, en input submit. Donc j'ai fait...
9 févr. 2022 à 14:58
9 févr. 2022 à 15:05
Mais pour couper la fenêtre modale c'est ce qui est en ligne 285, 347 et 397 "<a href="#" class="modal_close1">×</a>".
Et comment "vider" la session quand l'utilisateur revient sur le site ?
9 févr. 2022 à 15:10
9 févr. 2022 à 15:15
quand l'utilisateur arrive sur le site en n'ayant cliqué aucun des boutons, donc après la ligne 89.
9 févr. 2022 à 17:33