La page... contient des données envoyées par POST

kir0

Nouveau WRInaute
Bonjour,

j'aimerais savoir comment enlever le message "La page que vous tentez de voir contient des données envoyées par POST..." lorsque je rafraichis ma page PHP ?

J'ai pensé passer par une page intermédiaire qui ensuite par un header location me renvoi sur la bonne page mais ca ne fait pas trés propre dans le code...
sinon j'ai essayé aussi de faire un unset() de mes variables en fin de page mais apparement ca ne marche pas !

Si quelqu'un connais une solution je suis preneur :)
 

sureau

WRInaute discret
tu passes par une page où dedans tu retraite les données afin de ne plus avoir le post

exemple :
suite à la validation du formuaire post, tu envoie sur la page temp.php
Sur cette page, tu traites tes données, ou converti ton post en chaine et envoie vers tapage.php (via un header("Location:tapage.php?mesVar=$tachaine");
Sur tapage.php, tu récupère la chaine et la retranscrit pour réobtenir tes variables post. Sur la page temporaire, tu fais une conditions : si il n'y a pas de post (donc c est une page précédente) tu renvois vers ton formulaire
 

sureau

WRInaute discret
Non car quand tu fais un "précédent" dans ton navigateur, celui ci te propose de reposter les éléménet du formulaire de facon automatique avant d'interpréter la page, et c est ce message qu'il veut éviter
 

serval2a

WRInaute accro
Bonjour,
Le plus simple à mon avis c'est de placer un lien qui renvoit à la page précédent le post, ainsi l'utilisateur n'est pas tenté de raffraichir la page ou d'aller sur la page précédente.
En outre, raffraichir un page passant les données par GET peut conduire également à envoyer plusieurs fois les données dans la base, donc pas trop d'utilité à mon humble avis.
La page transitoire avec header location n'a pas non plus trop d'utilité mieux vaux utiliser une redirection quasi instantanée par meta.

@+
 

sureau

WRInaute discret
pas possible à mon avis.
... c est toujours possible :)

Si passer en get, ca résoud le problème.

tu peux faire passer sur une page transitoire
dedans tu mets quelque chose dans le genre

Code:
POUR TA PAGE TRANSITOIRE
$_SESSION['POST'] = array();
if(isset($_POST['tavar'])){
foreach($_POST as $key=>$val){
$_SESSION['POST'][$key] = $val;
}
// tu enregistre des données dans la base ici
}else{
header("Location:ta page avec le formulaire.php");
}

// POUR TA PAGE SI VALIDATION DU FORMULAIRE
soit tu remet les variables en post, soit tu traite directement les session
if(isset($_SESSION['POST'][$key])){ // alors on a eu une validation du formulaire
foreach($_SESSION['POST'] as $key=>$val){
$_POST[$key] = $val;
}

}
 

kir0

Nouveau WRInaute
Voila le GET a résolut mon probleme :)
malgres que les données restent dans l'url au moins quand on refresh la page il n'y a pas le message !

En faites je developpe une application pour un standart téléphonique en PHP (avec du VoiceXML) avec une liste d'appels en attente et donc j'ai un bouton rafraichir pour remettre la liste à jour :)
 

kir0

Nouveau WRInaute
La page est assez simple , il y'a juste une liste d'appels avec des boutons d'actions (traiter l'appel, envoyer sms etc...), mais ca pourait être une bonne occaz de se mettre a l'AJAX, si tu as des sites assez simple pour commencer car je n'y ai jamais touché :)
 

Bacteries

WRInaute passionné
sureau a dit:
Non car quand tu fais un "précédent" dans ton navigateur, celui ci te propose de reposter les éléménet du formulaire de facon automatique avant d'interpréter la page, et c est ce message qu'il veut éviter

Ok, j'avais pas capté le problème.
Pour un moteur de recherche j'avais fais un traitement du post qui renvoyé sur la page en mettant les variables en session. Bête mais ça marche.
 

Discussions similaires

Haut