[RESOLU] Bouton précédent en supprimant la dernière variable ajoutée

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] Bouton précédent en supprimant la dernière variable ajoutée

Re: Bouton précédent en supprimant la dernière variable ajoutée

par wisefun77 » 06 avr. 2022, 16:46

Bonjour,

J'ai trouvé une solution.

Je mets le bouton dans le footer

Code : Tout sélectionner

<form> <?php $var= $_SESSION['Balises']; //echo $var;( juste un test pour voir si les balises sont correctes. ?> <button type="submit"><a href="<?php echo $_SERVER['HTTP_REFERER'];?>">Précédent</a> </button> </form>
dans la page précédente

Code : Tout sélectionner

<?php include("header.php"); ?> <div id="global"> <div id="texteglobal"> <div id="annule"> <span>En cas de demande annulée :</span> <a href="code-final.php" class="boutonannule">Cliquez ici</a> </span> </div> </br></br> Type d'intervention : </br> <?php if ( !isset( $var ) ){ ob_end_flush(); }else{ session_start(); $_SESSION["Balises"] = $_SESSION["Balises"] . $_POST["balise"]; echo $_SESSION["Balises"]; } ?> </div> </br></br> Méthode d'intervention( et la suite de la pge)
Le seul soucis c'est quand je resélectionne un bouton il me rajoute la balise.
ex:

Code : Tout sélectionner

[ADC_START][GUICHET][DEM][u][b][DEM][DEM][/b][/u]
Je pense que je dois trouver un moyen de supprimer les doublons à la fin du formulaire avant d'afficher toutes les balises.

Merci encore pour votre patience.

Re: Bouton précédent en supprimant la dernière variable ajoutée

par wisefun77 » 06 avr. 2022, 09:14

Bonjour ynx, or1,

je viens de faire le simple lien.
Maintenant il ne demande plus de recharger la page.
Mais ce message d'erreur

Code : Tout sélectionner

( ! ) Notice: Undefined index: balise in C:\wamp\www\_Dev\sdp-methode.php on line 18 Call Stack # Time Memory Function Location 1 0.0017 137256 {main}( ) ..\sdp-methode.php:0
qui pointe sur

Code : Tout sélectionner

$_SESSION["Balises"] = $_SESSION["Balises"] . $_POST["balise"];
Je vais essayer avec if isset, mais surtout je ne dois pas perdre les données des pages.
Merci

Re: Bouton précédent en supprimant la dernière variable ajoutée

par ynx » 05 avr. 2022, 19:52

Laisse de coté le post-redirect-get et les redirections avec header pour l'instant.
Suit la suggestion de or1 qui est surement la meilleure solution à la demande initiale : au lieu d'utiliser un bouton avec la fonction js history.back, fait un lien qui pointe vers l'URL de la page précédente. Via ce lien, le navigateur ne proposera pas "Confirmer le nouvel envoi du formulaire".

Re: Bouton précédent en supprimant la dernière variable ajoutée

par wisefun77 » 05 avr. 2022, 15:22

Bonjour,

Merci pour toutes vos aides.
Je suis trop nul, cela ne fonctionne pas.
ce code fonctionne

Code : Tout sélectionner

<?php if(isset($_POST['loc'])){ // traitement des données header('Location:'.$_SERVER['HTTP_ORIGIN'].$_POST['loc']); exit(); }
Mais renvoie au début du site, et non à la page précédente.
j'ai mis dans le bouton.

Code : Tout sélectionner

<td> <?php unset ($_POST['balise']); ?> <script type="text/javascript"> function on4(){ $.ajax({ type: 'POST', url: 'window.history.back(-1)', }); }; </script> <form> <input type="button" onclick="window.history.back(-1)" value="Précédent"/> </form> </td>
puis dans la page

Code : Tout sélectionner

<?php if(!isset($_POST['balise'])){ ?> <?php // Set session variables $_SESSION["Balises"] = $_SESSION["Balises"] . $_POST["balise"]; echo $_SESSION["Balises"]; ?> </br></br> Type d'intervention: </br></br> S'agit-il d'une Demande ou d'un Incident ? </br></br> <table align="center"> <tr> <td> <form method="POST" action="sdp-demande.php"> <input type="hidden" name="balise" value="[DEM]"/> <input type="submit" name="demande" value="Demande"/>&nbsp;&nbsp; </form> </td> <td> <form method="Post" action="incident-demande.php"> <input type="hidden" name="balise" value="[INC]"/> <input type="submit" name="incident" value="Incident"/>&nbsp;&nbsp; </form> </td> </tr> </table> <?PHP } elseif(isset($_POST['loc'])){ // traitement des données header('Location:'.$_SERVER['HTTP_ORIGIN'].$_POST['balise']); exit(); }
Franchement là je suis complètement HS.

Merci pour votre patience.

Re: Bouton précédent en supprimant la dernière variable ajoutée

par or 1 » 03 avr. 2022, 20:31

pour faire un lien cliqué par l'internaute, un simple code <a href="/lapage">précédent</a> fait l'affaire.

Re: Bouton précédent en supprimant la dernière variable ajoutée

par wisefun77 » 03 avr. 2022, 18:12

Bonjour,
Une question me taraude l'esprit.
Pourquoi ne pas fermer la session quand on clique sur le bouton précédent?
Car je ne comprend pas la logique la fonction header, et je ne comprend pas comment la mettre dans le bouton précédent.
Merci

Re: Bouton précédent en supprimant la dernière variable ajoutée

par wisefun77 » 02 avr. 2022, 13:16

Bonjour ynx,
Un énorme et sincère MERCI pour ta réponse. Cette nuit j ai lu des tutos mais pas trouvé la solution je vais lire tes liens.
Merci beaucoup.

Re: Bouton précédent en supprimant la dernière variable ajoutée

par ynx » 02 avr. 2022, 09:50

Pour voir comment utiliser la fonction header(), la doc php est une première bonne source d'information :
https://www.php.net/manual/fr/function.header.php
N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé, soit par des lignes HTML habituelles dans le fichier, soit par des affichages PHP.
Ceci est dû au fonctionnement du protocole HTTP. Une réponse HTTP est toujours structurée dans l'ordre suivant : d'abord les entêtes, puis le contenu.

Pour l'implémentation du post-redirect-get en php, j'ai pas beaucoup cherché mais le tuto suivant me semble assez détaillé : https://www.phptutorial.net/php-tutorial/php-prg/

Re: Bouton précédent en supprimant la dernière variable ajoutée

par wisefun77 » 01 avr. 2022, 18:44

Bonjour,
lorsque je mets ce code en fin de formulaire sur une page, le bouton suivant ne fonctionne pas.

Code : Tout sélectionner

<form method="GET"> <?PHP header('location: nom de la page précédente'); ?> </form>
connaissez vous un tuto qui explique bien sur internet?

Merci pour votre patience.

Re: Bouton précédent en supprimant la dernière variable ajoutée

par wisefun77 » 01 avr. 2022, 17:52

Bonjour GuillaumeLM, ynx,
Merci pour vos messages.
Je vais étudier la solution de @ynx.
Je suis persuadé que tu avais la même solution @GuillaumeLM.

Le poste n'est pas assuré, j'ai juste passé le premier cape.
Mais au moins personnellement j'ai bien progressé grâce à vous.

Re: Bouton précédent en supprimant la dernière variable ajoutée

par ynx » 01 avr. 2022, 17:35

Bonjour wisefun77,

Félicitation pour le poste !

Concernant le message du navigateur "Confirmer le nouvel envoi du formulaire", ceci vient du fait que la précédente page doit correspondre à une requête de type POST (l'envoi du formulaire je suppose). Si tu recharges cette page, le navigateur va alors refaire cette requête POST, comme si tu envoyais le formulaire une deuxième fois.

La solution classique pour résoudre ce comportement est d'utiliser le principe POST-Redirect-GET : https://fr.wikipedia.org/wiki/Post-redirect-get
Il s'agit de faire une redirection (requête GET) après le traitement du formulaire (requête POST).

Dans le script qui traite le formulaire (autrement dit, le script qui traite la requête POST), il faudrait ajouter une redirection à la fin de ce traitement (via la fonction php header('Location: url');). Cette redirection sera alors une requête de type GET, le navigateur ne proposera donc pas de renvoyer le formulaire.

Re: Bouton précédent en supprimant la dernière variable ajoutée

par GuillaumeLM » 01 avr. 2022, 17:34

bonjour,
tu veux un retour sur la page formulaire précédent, ou un retour sur une autre page type dernière page avec le lien des formulaires?

Bouton précédent en supprimant la dernière variable ajoutée

par wisefun77 » 01 avr. 2022, 15:48

Bonjour,

Grace à votre aide, je viens de valider la première condition pour avoir le poste.
Maintenant je dois faire un bouton précédent, sachant que la page contient des variables affichée depuis les autres pages lues.
je ne peut mettre de BDD.

j'ai essayé avec:

Code : Tout sélectionner

<input type = "button" value = "<<< Précédent" onclick = "history.go(-1)">
Mais cela me demande à chaque fois "Confirmer le nouvel envoi du formulaire".
si j'accepte il affiche quand même la dernière variable.
Comment faire pour passer cette étape?
Merci.