Mougeole

  • Site web
  • Nombre de sujets
    1
  • Nombre de messages
    2
  • Nombre de commentaires
    Aucun
  • Nombre de news
    Aucune
  • Niveau en PHP
    Débutant

Ses derniers messages sur les forums

Mougeole
le 30/01/2008 à 12:46
formulaire $_POST et rechargement de page
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!
Mougeole
le 30/01/2008 à 10:55
formulaire $_POST et rechargement de page
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.
LoadingChargement en cours