Page 1 sur 1
empêcher l'actualisation de la page et donc de la requete
Posté : 29 août 2014, 11:50
par tycoons
Salut à tous,
J'ai encore un petit souci
j'ai une page avec un formulaire cacher de type hidden mais des que je fait un f5 il me refait la requête je voudrai empêcher ce fonctionnement.
idem pour le retour en arrière du navigateur si quelque peu prendre un peu de temps pour m'expliquer
merci à tous
Re: empêcher l'actualisation de la page et donc de la requet
Posté : 29 août 2014, 12:25
par ynx
Salut,
Effectivement si on rafraichit une page juste après avoir envoyé un formulaire en méthode POST, le navigateur nous indique que les données vont être à nouveau renvoyées (on relance en fait la dernière requête http faite par le navigateur, et celle-ci correspond à une requête POST dû à l'envoie de nos données via le formulaire).
Le solution la plus utilisé est de faire une redirection après le traitement du formulaire vers la page de résultat (qui peut être la page du formulaire). En effectuant cette redirection, la dernière requête du navigateur correspond alors à une requête http GET classique, et le rafraichissement de la page ne nous indiquera aucun message.
Bonne journée
Re: empêcher l'actualisation de la page et donc de la requet
Posté : 29 août 2014, 13:13
par tycoons
salut ynx,
C'est toute à fait sa donc pour palier a sa j'ai donc créer ma page de traitement d'un coté et je renvoi sur la page d'affichage par contre je voudrai mettre un pop qui dit que l'opération c'est bien traiter une idée?
arf je croit que je suis pas très claire
donc je m'explique j'ai 2 page traitement et affichage
affichage contiens un formulaire caché et traitement sa parle de lui même.
je fait donc un header location dans traitement mais je voudrais que arrive sur la page de destination il me dise ok ou c'est pas bon
Re: empêcher l'actualisation de la page et donc de la requet
Posté : 29 août 2014, 13:37
par xTG
Renseignes une variable de session avec le résultat du traitement.

Tu la récupères sur le script affichage, tu l'affiches, puis tu la supprimes.
Comme ça en cas de rafraichissement plus de message/popup.
Re: empêcher l'actualisation de la page et donc de la requet
Posté : 29 août 2014, 13:55
par tycoons
salut xTG,
tu peut me donner un exemple que je comprenne comment on gère sa stp
avant quand je mettais tous dans la même page je faisait sa avec try succes ou catch erreur
mais la sa fonctionne toujours mais sur la page traitement est nom pas sur la même page.
je suis pas familier avec les session encore d'ou mas demande d'exemple
session start sur les deux page mais après suis larguer
Re: empêcher l'actualisation de la page et donc de la requet
Posté : 29 août 2014, 14:22
par ynx
Pour afficher un message de confirmation, tu peux ajouter un paramètre get dans l'url de la redirection après le traitement :
// fin du traitement du formulaire
header('formulaire.php?succes=1');
exit();
Puis dans la page où tu affiche de le formulaire, tu affiches le message de confirmation si ce paramètre est présent :
if (!empty($_GET['succes'])) {
echo 'Formulaire traité';
}
Bonne journée
Re: empêcher l'actualisation de la page et donc de la requet
Posté : 29 août 2014, 14:34
par tycoons
Nickel merci bien
Re: empêcher l'actualisation de la page et donc de la requet
Posté : 29 août 2014, 14:37
par sirakawa
1 Renseignes une variable de session avec le résultat du traitement.

2 Tu la récupères sur le script affichage, tu l'affiches, puis tu la supprimes.
Comme ça en cas de rafraichissement plus de message/popup.
1 Dans le script où a lieu le traitement tu crées une variable de session
<?PHP
session_start();
/*...*/
if (isset($_SESSION['enregistre'])
{
$enregistre = $_SESSION['enregistre'])=;
}
else
{
$enregistre = "N3;
}
if ($enregistre == "N")
{
traitement normal;*si tout s'est bien passé
$SESSION[enregistre'] = "O";
sinon
$SESSION[enregistre'] = "N";
}
else
{
popup "pas deux fois";
}
?>
2 dans le script affichage:
<?PHP
session_start();
/*...*/
$enregistre = $SESSION[enregistre'];
suivant la valeur tu affiches le popup adapté