![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 1 Dołączył: 5.09.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
1) Mam formularz który zapisuje do bazy danych jeden rekord po wciśnięciu przycisku "Submit" i przechodzi do następnej strony; 2) Jeśli w tym momencie się da w przeglądarce przycisk "Wstecz", to wracamy do formularzu; Pojawia się ostrzeżenie: "Otwierana strona zawiera dane POSTDATA. Jeżeli ..." 3) Klikam "OK" i oczywiście się dodaje rekord do tabelki. Ale ja tego nie CHCĘ ![]() Jak to zabezpieczyć ? Że jak ktoś da przycisk "Wstecz" to żeby nie dodawało drugi raz tego samego rekordu. Dziękuję za odpowiedź. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 28.10.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Po dodaniu danych do bazy wyslij do przegladarki header i przeladuj strone juz bez zmiennych.
Wtedy przegladarka nie zobaczy strony do ktorej formularz zmienne wyslal. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 4.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Mikrouser mam ten sam problem...
Jeśli udało Ci się już to zrobić to może dasz mi jakies wskazówki od samego początku: bede bardzo wdzieczny. Pzdr |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 239 Pomógł: 27 Dołączył: 13.07.2005 Skąd: Jarocin Ostrzeżenie: (0%) ![]() ![]() |
ja do takiego czegoś używam header pl.php.net/header
header('Location: index.php'); -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
O zabezpieczeniu przed ponownym wysłaniem tego samego formularza było wiele razy na forum. Wystarczy dodac:
- pozostaje dodać do bazy pole i ustawić jako unikalne. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 1 Dołączył: 10.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
Opracowałem coś działającego. - Przynajmniej działa po dość dokładnych testach.
Na stronie z formularzem tworzę zmienną sesji np "time" w której zapisuje aktualny czas z funkcji time(). Jednocześnie z linkiem do strony z kodem usuwającym lub dodającym element wysyłam metodą GET wartość zmiennej SESSION['time'] Na stronie z usuwaniem lub dodawaniem rekordu najpierw porównuję czy zmienna time z GET-a jest równa zmiennej time z SESSION i jeśli tak to wykonuje dodawanie lub usuwanie rekordu. I teraz najważniejsze po operacji dodania lub usunięcia zapisuje w zmiennej SESSION['time'] aktualny czas. W ten sposób po odświeżeniu strony zmienna time z GET-a nie będzie równa zmiennej time z SESSION. Podobnie będzie gdy naciśniemy przycisk wstecz i przywróć. po wstecz przypisze się na stronie z formularzem w zmiennej SESSION['time'] nowa wartość czas, a po kliknięciu w przywróć w adresie i zmiennej GET będzie stara wartość co również spowoduje niewykonanie się niniejszego dodawania lub odejmowania. Jakby komuś wpadł do głowy przypadek, w którym uda się przechytrzyć moje podejście, będę wdzięczny za opis. Dodam, że PHP zajmuje się od 2 miesięcy więc mogę czegoś nie zauważyć. Zastanawiam się czy można to jeszcze usprawnić - korzystanie z funkcji time() tylko po to by sprawdzać powtórne użycie tego samego zapytania wydaje się być dość mało optymalne. Zastanawiam się co mogłoby dawać podobny efekt (czyli za każdym razem dawać inny wynik) ale działać szybciej od time() ![]() Ten post edytował bartoland 11.04.2010, 22:43:28 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 27.04.2025 - 06:48 |