Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Po naciśnieciu f5 pokazuje się komunikat, jak go usunąć?
Forum PHP.pl > Forum > Przedszkole
SN@JPER^
Witam,

mam jeden problem, otóż skrypt wyświetli komunikat "Wiadomość została wysłana", czyli, że wszystko przebiegło prawidłowo:



Jednakże po naciśnięciu f5 oraz po naciśnięciu w okienku, który wyskoczy OK dodany zostanie następny rekord:



Jak zrobić, aby po naciśnięciu f5 nie pokazywało się okienko?


Proszę o sugestie i porady, pozdrawiam.
Piniek
to jest informacje o tym ze po odswiezeniu stronu przeslesz po raz drugi dane POST usunac sie tegro rsczej nie da winksmiley.jpg
PawelC
Tak już jest, ja też tak mam i wielu innych tak ma. To samo Ci wyskoczy jak dodasz rekord do bazy etc... i zrobisz wstecz. Z tym nic niezrobisz.
batman
Nie możesz usunąć tego komunikatu. Przeglądarka informuje Cie, że po odświeżeniu ponownie wysłane zostanie żądanie POST.
Jeśli nie chcesz widzieć komunikatu, to po odebraniu zmiennych z formularza i zapisaniu ich do bazy/pliku, użyj funkcji header, która przekierujesz użytkownika na stronę z informacją "Wiadomość wysłana". Sposób ten uchroni Ciebie również przed kilkukrotnym dodaniem do bazy tych samych danych.
SN@JPER^
Hmm, a gdyby napisać kod, który nie pozwoli robić tego samego działania przez x czasu?
PawelC
Lol to jest komunikat przeglądarki którego nie usuniesz. Zrób tak jak powiedział batman
batman
SN@JPER^
Nie masz możliwości dokonywania zmian w zachowanie przeglądarki. Żaden skrypt nie zrobi tego, ponieważ tak to zostało skonstruowane. Użyj funkcji header, to komunikat nie będzie się pojawiał.
envp
Jedyne co Cie uratuje, to wyslanie danych ajaxem smile.gif
dr_bonzo
Ile razy batman ma powtarzac rozwiazanie?

Po dodaniu rekordu robisz
  1. <?php
  2. header( "Location: /wiadomosc/pokaz/123" );
  3. ?>

dzieki czemu po wyslaniu formularza zostaniesz przekierowany na nowy url, ktory zostanie pobrany GET'em a nie POSTem, i kazdy refresz wykona ponownie "pokaz wiadomosc 123" zamiast "wyslij nowa wiadomosc".
windman
Gdzieś na forum było...

generujesz losowy ciąg i wstawiasz go jako ukryte pole input.
Przed dodaniem rekordu sprawdzasz, czy zmienna sesyjna 'jakastam' ma wartośc ukrytego pola, gdy nie to dodajesz rekord i ładujesz ten ciąg do tej zmiennej, gdy wciśniesz f5 już nie doda ci nowego rekordu, bo w zmiennej sesyjnej będzie już ten wygenerowany ciąg.

Chyba nospor cos o tym pisał.

Pozdrawiam
crackcomm
Cytat(dr_bonzo @ 15.03.2008, 20:09:13 ) *
  1. <?php
  2. header( &#092;"Location: /wiadomosc/pokaz/123\" );
  3. ?>

najlepsze rozwiazanie wg. mnie
i prosze nie powtarzac sie 1000 razy biggrin.gif
szef
Możesz przed wysyłaniem formularza tworzyć klucz np
  1. <?php
  2. uniqid(rand(), true);
  3. ?>
i dodawać go do bazy. Po wciśnięciu F5 sprawdzać czy taki klucz już istnieje (ten sam formularz zostanie przesłany z tym samym kluczem) jeśli klucz istnieje to wywali komunikat o błędzie.

Pozdrawiam
Sabistik
  • przenoszę na przedszkole.
  • + dostaje batman.
  • jak jeszcze raz ktoś poda to samo rozwiązanie dostanie warna.
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.