Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Czy mozna wyczyscic POST poprzez JS?
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
marcini82
Witam!

Jest taka sytuacja:
strona1 - zawiera formularz z danymi POST --> strona2 - obsluga POST-a --> strona 3

I teraz jak na stronie 3 robie java script: history.go(-1) to przechodzi do poprzedniej, ale jednoczesnie przegladarka ostrzega, ze musi wyslac POST od nowa.
To do kitu bo akcja w php wywolywana przez POST wykonuje sie drugi raz.

Czy mozna w JavaScripcie jakos wyczyscic dane POST w przegladarce, zeby nie byly juz wysylane ponownie?
kszychu
Było to niejednokrotnie poruszane na forum. Wpisz w wyszukiwarkę header i poszukaj sobie odpowiednich wątków.
marcini82
Hmm...
No szukam i znalezc nie moge. Moze to jest proste jak juz sie wie, co sie chce znalezc...
Radarek
Schemat rozwiazania:
Masz 3 pliki: 1.php, 2.php, 3.php.

1.php -> generuje formularz i przekazuje dane do 2.php (form, action="2.php").
2.php -> analizuje i przetwarza dane a nastepnie wysyla nakaz przekierowania na plik 3.php (header("Location: 3.php"); exit(0)).
3.php -> jakis komunikat ze dane zostaly (lub nie) przetworzone.
marcini82
Aha, o to chodzi. Dzieki biggrin.gif
eai
Można to rozwiązać na 1 pliku php.

  1. <?php
  2. # Start sesji
  3.  
  4. # Jeśli formularz nie został wogóle wysłany
  5. if (empty($_POST) && empty($_SESSION['Form'])) {
  6. // wyświetlasz formularz
  7. } 
  8.  
  9. # Jeśli formularz został wysłany
  10. if (!empty($_POST) && empty($_SESSION['Form'])) {
  11.  
  12. # Przypisujemy zmiennej sesji dane z formularza
  13. $_SESSION['Form'] = $_POST;
  14.  
  15. # Wywołujemy jeszcze raz tę samą stronę
  16. header("Location: tensamplikphp.php");
  17. Die();
  18. } 
  19.  
  20. # Jeśli sesja zawiera elementy formularza
  21.  
  22. if (empty($_POST) && !empty($_SESSION['Form'])) {
  23. // Przetwarzasz dane $_SESSION['Form']
  24. // $_SESSION['Form'] to tablica zawierajaca element $_POST
  25.  
  26. #Kasujemy sesję
  27. unset($_SESSION['Form']);
  28. } 
  29.  
  30. ?>


A teraz przykład:
plik formularz.php

  1. <?php 
  2. // Start sesji
  3.  
  4.  
  5. // Jeśli formularz nie został wogóle wysłany
  6. if (empty($_POST) && empty($_SESSION['Form'])) {
  7.  
  8.  
  9. echo "
  10. <form method=\"POST\" action=\"formularz.php\">
  11. <input type=\"text\" name=\"pole\" size=\"20\">
  12. <input type=\"submit\" value=\"OK\" name=\"submit\">
  13. </form>
  14.  
  15. ";
  16.  
  17. } 
  18.  
  19.  
  20.  
  21. // Jeśli formularz został wysłany
  22. if (!empty($_POST) && empty($_SESSION['Form'])) {
  23.  
  24. // Przypisujemy zmiennej sesji dane z formularza
  25. $_SESSION['Form'] = $_POST; 
  26.  
  27.  
  28. // Wywołujemy jeszcze raz tę samą stronę
  29. header("Location: formularz.php");
  30. Die();
  31. } 
  32.  
  33.  
  34.  
  35. // Jeśli sesja zawiera elementy formularza
  36. if (empty($_POST) && !empty($_SESSION['Form'])) {
  37. // Przetwarzasz dane $_SESSION['Form']
  38. // $_SESSION['Form'] to tablica zawierajaca element $_POST
  39.  
  40. echo "<pre>";
  41. print_r ($_SESSION['Form']);
  42. echo "</pre>"; 
  43.  
  44.  
  45. // Kasujemy sesję
  46. unset($_SESSION['Form']);
  47. } 
  48.  
  49. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.