formulaire $_POST et rechargement de page

Répondre
Mougeole
le 30/01/2008 à 10:55
Mougeole
Bonjour

je voudrais eviter que le visiteur de mon site renvoie les donnees du formulaire en rechargeant la page.

Pour l'instant quand le visiteur recharge la page il obtient le message suivant :


The page you are trying to view contains POSTDATA.If you resend the data, any action the form carried out (such as a search or online purchase) will be repeated. To resend the data, click OK. Otherwise, click Cancel.


Pour eviter cela j'ai pense effectuer une redirection vers la meme page. Mais j'ai quelques problemes avec les headers

Pour tester tout ca, j'ai ecris un petit bout de code que voici :

<?php
print 'test pour eviter de renvoyer les donnees passees en post quand on recharge la page';

print '<form method="post" action=test_post.php>';

print '<input type="text" name="text" />';

print '<input type="submit" value="Test it !" name="submit" />' ;

print '</form>';


if(isset($_POST['text']))
{
echo $_POST['text'];
header('Location:test_post.php');

}

?>


Si mon test marche, il doit en theorie ne plus afficher le message et ne pas afficher le contenu de la variable $_POST['text'] puisque celle-ci n'existe plus.

Au lieu de cela, je revoie le message quand je recharge la page et j'obtient le message suivant :


Warning: Cannot modify header information - headers already sent by (output started at /.../.../test_post.php:2)
in /.../.../test_post.php on line 16


La ligne 16 correspondant a l'instruction header.

Est-ce que quelqu'un a une idee de comment effectuer une redirection qui marche?

Merci de vos reponse.
i M@N
le 30/01/2008 à 11:51
i M@N
Hello.

L'erreur doit se situer au niveau du echo ligne 16 sur le code au-dessus.

Commente ton echo et ça devrait fonctionner.
On ne doit pas avoir de sortie html (echo, print, ou n'importe quel caractère) avant les fonctions session_start(); set_cookie(); ou header();

Pourquoi utiliser des print ? echo c'est bien aussi ...

@+...
One Love, One Heart, One Unity.
Mougeole
le 30/01/2008 à 12:46
Mougeole
Salut

Merci pour ton aide c'etait effectivement un probleme avec le header. Je precise que meme un commentaire avant le header provoque une erreur. Il ne doit vraiment rien y avoir avant.

Voici le code final :

<?php
if(isset($_POST['text']))
{
header('Location:test_post.php');

$file = fopen("/.../.../test.txt",w);

fwrite($file,$_POST['text']);

fclose($file);
}



print 'test pour eviter de renvoyer les donnee passee en post quand on reload la page';

print '<form method="post" action=test_post.php>';

print '<input type="text" name="text" />';

print '<input type="submit" value="Test it !" name="submit" />' ;

print '</form>';

?>


On inscrit la variable envoye par formulaire dansle fichier test.txt.

Au rechargement de la page le fichier n'est pas modifie, le message d'avertissement n'apparait pas, les donnees ne sont pas renvoyees. Ca marche!
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours