Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zabezpieczenie przed ponownym wysłaniem formularza
Forum PHP.pl > Forum > PHP
chceBYCpro
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
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
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
http://forum.php.pl/index.php?showtopic=44...t=0&start=0
i tyle w temacie
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.