![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 61 Pomógł: 3 Dołączył: 18.10.2012 Skąd: Zagłębie Dąbrowskie Ostrzeżenie: (0%) ![]() ![]() |
wyobraźmy sobie zwykły formularz gdzie dane przesyłane są metodą POST
po przesłaniu formularza odbieramy dane etc. teraz chcemy kliknąć przycisk "wstecz" w przeglądarce i dostajemy komunikat od przeglądarki "czy chcemy ponownie wysłać dane POST" aby tego uniknąć znalazłem taki oto link: link do funkce.net a wnim rozwiązanie: Kod if ($_SERVER['REQUEST_METHOD']=='POST') { header('Expires: ' . gmdate('D, d M Y H:i:s', time()+1000) . ' GMT'); header('Cache-Control: Private'); } i teraz pytanie do was. Czy to ktoś mi może wytłumaczyć zasadę działania tego krótkiego kodu? w sensie dlaczego komunikat nie jest już wyświetlany? czy są jakieś wady tego rozwiązania? Ten post edytował semafor1985 26.02.2013, 18:01:58 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 186 Pomógł: 6 Dołączył: 20.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Zablokowanie ponownego wysłania danych POST po przycisku wstecz Wydaje mi się, że to działa na podstawie - wysyła ponownie formularz jeżeli time() zmieni się o 1000 ( czyli 1 sekunde bodajże ) |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 61 Pomógł: 3 Dołączył: 18.10.2012 Skąd: Zagłębie Dąbrowskie Ostrzeżenie: (0%) ![]() ![]() |
z tego co udało mi się znaleźć, kawałek:
header('Expires: ' . gmdate('D, d M Y H:i:s', time()+1000) . ' GMT'); sprawia, że w pamięci przeglądarki nic nie jest zapisywane z danej strony (header z datą wsteczną) (czyli nie są zapisywane dane przesyłane przez POST( ![]() ale mogę się mylić. potrzebuje więcej szczegółów jeśli moge prosić ![]() |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 7 Dołączył: 6.01.2012 Ostrzeżenie: (0%) ![]() ![]() |
Jeszcze nie miałem okazji wypróbować, ale podobno działa:
W pliku 'przyjmującym' dane z POSTa, piszesz instrukcje, które te dane przetwarzają, zapisują etc., co tam chcesz; Na końcu dodajesz polecenie (oczywiście zamiast 'index.php' może być inny adres): Wówczas po przetworzeniu danych od razu wyrzuci do strony docelowej. I użytkownik nawet po kliknięciu przycisku 'wstecz' czy walnięciu Backspace nie wróci do strony przetwarzającej, tylko do formularza. Ten post edytował stud3nt 26.02.2013, 19:32:50 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 61 Pomógł: 3 Dołączył: 18.10.2012 Skąd: Zagłębie Dąbrowskie Ostrzeżenie: (0%) ![]() ![]() |
dziękuje za opisanie metody, znam ją i nawet stosowałem
![]() ale ja nie poszukuje odpowiedzi na pytanie "co zrobić żeby..." tylko pytam o ten konkretny przykład dlaczego ustawiając tak headery komunikat się nie wyświetla i co się dzieje z danymi POST (jak są przesyłane? czy w ogóle? etc) nie potrzebuje innego rozwiązania, to rozwiązanie świetnie się spełnia, działa tak jak potrzebuje a pytam po to bo nie rozumiem mechanizmu jego działania i nie wiem czy nie wpłynie to na inne elementy ale dzięki za chęci --------------------------- widze że nie bardzo idą odpowiedzi ![]() to może ktoś jest w stanie odpowiedziec na pytanie co robią 'Expires' i 'Cache-Control' jakaś definicja, link (coś więcej niż expires to data wygaśniecia dokumentu w przeglądarce) Ten post edytował semafor1985 27.02.2013, 12:13:45 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 27.04.2025 - 08:24 |