variable $_POST et bouton retour

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 : variable $_POST et bouton retour

Re: variable $_POST et bouton retour

par @rthur » 28 juil. 2015, 14:04

lol...ca sent la pub déguisée...
Effectivement ! Certains ne doutent de rien :-D

Re: variable $_POST et bouton retour

par jp.bond » 28 juil. 2015, 13:53

lol...ca sent la pub déguisée...

Re: variable $_POST et bouton retour

par Marshal » 28 juil. 2015, 12:06

Bonjour jp.bond ,
Je suis content de trouver à peu près du même niveau que moi :D . T'inquiètes, tu es meilleurs que moi :lol: . Tu sais, il n'y a rien de honteux à ne pas comprendre. Tout comme toi, quand j'ai du mal à cerner certaines choses, je me renseigne continuellement sur le net :roll: .Parfois, ça donne envie de jeter l'éponge.

Re: variable $_POST et bouton retour

par tof73 » 23 juil. 2015, 18:22

ton traitement php
header("Location: pagemerci.php");
exit();

Re: variable $_POST et bouton retour

par @rthur » 23 juil. 2015, 18:21

Bonjour,

Voici un exemple trouvé sur Stackoverflow :
if ($_POST) {
   // Effectuer ici le traitement (ajout dans une bdd ou envoie de mail par exemple)
   // ...

   // Rediriger vers la page courante (ou une autre page si besoin)
   header("Location: " . $_SERVER['REQUEST_URI']);
   exit();
}
http://stackoverflow.com/a/4142969

Re: variable $_POST et bouton retour

par jp.bond » 23 juil. 2015, 18:10

je vous avoue que, etant dans le forum php débutant, la technique du PRG Pattern est un peu confuse pour moi... j'ai commencé à faire des recherches sur le net, mais c'est encore pire lol : https://amethyste16.wordpress.com/2014/ ... ttern-prg/
faut que je cherche encore pour trouver des exemples d'implémentation simples... ;-)

Re: variable $_POST et bouton retour

par xTG » 23 juil. 2015, 16:23

D'expérience après avoir lu ton souci je te recommande aussi le pattern PRG que te propres Ryle.
Cela répond parfaitement à la problématique. :)

Re: variable $_POST et bouton retour

par jp.bond » 23 juil. 2015, 14:22

ok merci pour vos suggestions...
je vais les étudier une par une et ce qui est le plus simple et/ou le plus sûr dans mon cas ;-)
merci encore !

Re: variable $_POST et bouton retour

par Ryle » 23 juil. 2015, 11:01

Bonjour,

Pourquoi ne pas utiliser le pattern PRG (Post Redirect Get) ? Le principe est qu'une fois que l'enregistrement du formulaire envoyé en post a été réalisé, tu rediriges l'utilisateur sur une nouvelle page via un header php (avec éventuellement les paramètres qui vont bien pour afficher d'éventuels messages de confirmation ou d'erreur).

Cette redirection se fait en GET vers une page qui ne traite pas le formulaire et qui n'a pas nécessité l'envoi d'un formulaire pour être affiché. Ainsi, lorsque l'utilisateur sollicite à nouveau cette page (via le bouton précédent du navigateur, la touche backspace du clavier, en farfouillant dans son historique, etc.), aucun formulaire n'est renvoyé et aucune demande de confirmation de renvoi des données n'est proposé par le navigateur. L'utilisateur arrive au mieux sur une page lui indiquant que les données qu'il avait envoyée ont été correctement enregistrées (ou pas), mais ne les renvoi pas :)

Re: variable $_POST et bouton retour

par Ascla » 22 juil. 2015, 20:00

Où alors j'ai une autre proposition !
Sur ta page du formulaire, tu fais un envois par requête Ajax. En gros le navigateur va appeler une page (la page d'envoie) mais celle ci ne sera pas dans l'historique.
Ensuite, en fonction de la réponse de ta page php (celle qui est appelée et qui écrit les données), tu rediriges ou non vers une page.
Là tu n'auras plus le problème de retour.

Re: variable $_POST et bouton retour

par Ascla » 22 juil. 2015, 19:57

alors dans ce cas il faudrait que je crée une regle qui vérifie si TOUS les champs sont vides
Et bien tu peux utiliser :
if (condition1 != "" && condition2 != "" && condition3 != "") {
    //On peut envoyer le formulaire
}

Re: variable $_POST et bouton retour

par jp.bond » 22 juil. 2015, 19:54

A la rigueur, l'utilisation d'une valeur cachée du genre $cachée = 1 passée en $_POST entre l'étape 2 et 3, et qui serait testée à chaque fois qu'on arrive sur la page 3 (si la valeur existe alors j'enregistre toutes les autres $_POST dans la base).
Dans le cas d'un retour navigateur, on passe de la page 4 à la page 3, et donc la valeur cachée n'existe pas... et donc on ne fait rien
Ca pourrait etre une solution plus simple qu'un test pour savoir si TOUTES les valeurs sont vides...
non ?

Re: variable $_POST et bouton retour

par jp.bond » 22 juil. 2015, 19:51

avec une valeur fixe, il n'y a pas moyen de savoir, au second traitement du formulaire, si c'est le même formulaire resoumis avec les mêmes données, ou si c'est un second remplissage du formulaire.
un simple microtime() suffit.
finalement, dans mon cas, peu importe que le formulaire soit re-soumis, du moment que les valeurs sont transmises...
mais dans mon schéma, le probleme c'est si l'utilisateur utilise le bouton retour du navigateur... prenons un exemple de parcours utilisateur :

1 : login module d'admin > 2 : accès au formulaire de la page à modifier > 3 : transmission des valeurs du formulaire en $_POST et enregistrement des modifs sur cette page finale > 4 : retour à la liste des pages disponibles > 5 : utilisation du bouton retour du navigateur et donc retour à la page 3 : sauf que ce coup ci les valeurs du formulaire en $_POST sont vides vu qu'elles ne sont pas transmises par la page 2 et donc enregistrement de valeur vide donc écrasement complet

Re: variable $_POST et bouton retour

par jp.bond » 22 juil. 2015, 19:45

Tu dis que les champs sont vides.
Mais pourquoi ne pas mettre une sécurité du type :
.Si un des champs est vide
>Alors on annule l'envoi dans la BDD
À ce moment là, plus aucun ajout de ligne vide ne pourra avoir lieu.
je ne peux pas mettre ce genre de sécurité car certains champs peuvent etre vides... par contre tous les champs ne peuvent pas etre vides... alors dans ce cas il faudrait que je crée une regle qui vérifie si TOUS les champs sont vides

Re: variable $_POST et bouton retour

par tof73 » 22 juil. 2015, 18:44

avec une valeur fixe, il n'y a pas moyen de savoir, au second traitement du formulaire, si c'est le même formulaire resoumis avec les mêmes données, ou si c'est un second remplissage du formulaire.
un simple microtime() suffit.