chceBYCpro
24.06.2009, 18:12:39
Witam,
interesuje mnie rozwiązanie, z którego korzystają fora takie jak phpbb; kliknięcie wstecz bądź F5 nie powoduje nowego wpisu do bazy a nawet nie pokazuje komunikatu o ponownym przesłaniu danych. proszę o pomoc, bo siedzę już dosyć długo nad tym...;/
PS nie chcę gotowca tylko pomysłu jak zrobić ewentualnie jakieś polecenia, które się przydadzą.
singles
24.06.2009, 18:21:01
Jedno z możliwych rozwiązań: Do formularza dokładasz ukryte pole z wygenerowanym losowym identyfikatorem. Równocześnie ustawiasz go w sesji. W skrypcie obsługującym formularz sprawdzasz, czy identyfikator przesłany POSTem razem z treścią wiadomości zgadza się z tym w sesji. Jeśli tak, dodajesz/edytujesz rekord w bazie, co tam chcesz - równocześnie czyszcząc wpis w sesji. Następna próba obsłużenia tego samego formularza już się nie powiedzie, bo zmienne sesyjna będzie pusta.
batman
24.06.2009, 18:37:20
Jestem pewien, że ten temat już się przewijał na forum, ale dzisiaj pokłóciłem się z wyszukiwarką.
Robisz to tak:
1. form.html - tutaj masz formularz, który wysyłasz na handle.php.
2. handle.php - obsługa formularza, zapisanie danych, itd
3. Po obsłużeniu danych używasz funkcji header do przekierowania na stronę z podziękowaniami/formularzem/dowolną inną stronę.
Zabawa z sesjami, ciastkami, unikatowymi identyfikatorami to tylko zbędna zabawa, przez którą bardziej się narobisz.
nospor
24.06.2009, 18:44:02
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.