Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Usunięcie zmiennych przesłanych do formularza
Forum PHP.pl > Forum > Przedszkole
dr revuu
Witam. Zbudowałem sobie formularz na tej zasadzie (schemat):

Kod
if($_POST[edytuj]==1)
{
$dodajdobazy=mysql_query("jakieś zapytanie");
}
if($dodajdobazy==True)
{echo "ok";} else {echo "nie ok";}


<form action="tasamastrona" method="post" >
<input type="hidden" value="1" name="edytuj">
<select>
<option value="jakaśwartość">coś</option>
<option value="jakaśwartość2">coś2</option>
</select>
<input type="submit">
</form>


----
Po dodaniu do bazy wyświetla mi komunikat pozytywny, ale gdy w tym momencie odświeżę stronę to wyskakuje "Prześlij Ponownie", a jeśli to nacisnę to znów dodaje do bazy. Próbowałem radzić sobie z tym funkcją unset(), ale nie działało. Jakieś pomysły mile widziane winksmiley.jpg
tmka
Możesz, po dodaniu rekordu, dać przekierowanie.
phpion
Po dodaniu wpisu do bazy przekieruj użytkownika na jakąś stronę:
  1. header('Location: strona.php');

Może to być ponowne wyświetlenie formularza lub np. lista dodanych rekordów.
dr revuu
^Góra,

Wiem, ale problem znów się pojawi, gdy użytkownik będzie chciał cofnąć przez "wstecz". Potrzebuje odpowiedzi konkretnie na ten problem, jeśli nikt nic nie wymyśli, wtedy pomyśli się nad obejściem.
misiek172
użyj tokena czyli

w formularzu wygeneruj jakiś ciąg znaków. wpisz go razem z danymi do bazy, gdy ktoś cofnie, skryptem sprawdź czy token w bazie jest taki sam jak ten co chce się znowu przeslać, jeżeli tak to nie dodawaj i po sprawie

ewentualnie możesz sprawdź czy ostatnio dodane dane nie są takie same jakie chcę się teraz dodać, jeżel itak to nie dodajesz

ewentualnie zrób że dane IP i przeglądarka może dodawać z odstępem minimum powiedzmy 15 sekund.

użyj jeszcze header('Location: index.php');

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.