Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> metoda POST i przycisk "wstecz", zasada działania
semafor1985
post 26.02.2013, 18:00:33
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
Go to the top of the page
+Quote Post
teez
post 26.02.2013, 18:05:15
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 )
Go to the top of the page
+Quote Post
semafor1985
post 26.02.2013, 18:10:21
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(questionmark.gif))
ale mogę się mylić.
potrzebuje więcej szczegółów jeśli moge prosić smile.gif
Go to the top of the page
+Quote Post
stud3nt
post 26.02.2013, 19:32:26
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):
  1. header("Location:index.php");


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
Go to the top of the page
+Quote Post
semafor1985
post 26.02.2013, 20:04:38
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 smile.gif
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 smile.gif
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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2025 - 08:24