Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]Wysyłanie metodą POST i odświeżanie strony.
Forum PHP.pl > Forum > Przedszkole
Adis92
Witam. Mam problem związany z wysyłaniem danych z formularza przy użyciu metody POST. Wszystko fajnie ale jeżeli po wysłaniu i odebraniu danych ktoś postanowi odświeżyć stronę wyświetla się okno wymuszające potwierdzenie przesłania danych. I tutaj jest moje pytanie jak zrobić aby to okienko się NIE pokazywało. Tak wiem o metodzie GET ale nie zawsze jest to odpowiednia metoda, a wiem że wiele profesjonalnych serwisów wysyła dane za pomocą metody POST i okno się nie wyświetla.
b4rt3kk
Cały trick polega na tym by po pobraniu danych z POST nastąpiło przekierowanie.

  1. <?php
  2. if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  3. // pobranie oraz przetworzenie danych z $_POST, np. zapis do bazy
  4. // kiedy czynności zostaną wykonane może nastąpić przekierowanie
  5. header("Location: sukces.php");
  6. }
  7. ?>
  8. <form method="POST" action="">
  9. <input type="text" name="inp1" />
  10. <input type="submit" />
  11. </form>


oraz plik sukces.php:

  1. echo 'Dziękujemy za wypełnienie formularza. Możesz go sobie odświeżać do woli. :)';
Adis92
Po małym dostosowaniu działa tak jak potrzebowałem. Dzięki

Edit.: Jednak jest mały problem. Zrobiłem to tak:
  1. if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  2. header("Location: ".$_SERVER['REQUEST_URI']);
  3. }

Problem polega na tym, że po odświeżeniu strony po wysłaniu formularza nie działa przycisk w przeglądarce powrót do poprzedniej strony.
b4rt3kk
Tzn. jak nie działa? Po wciśnięciu wstecz powinno przenieść do strony sprzed przekierowania, bo inaczej to nie miałoby sensu.
Adis92
Właśnie w przeglądarce chrome wywołanie tej funkcji blokuje przycisk wstecz w ie wszystko działa normalnie więc to może jest wina przeglądarki.
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.