Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Odświeżanie ekranu
Forum PHP.pl > Forum > Przedszkole
butek
Mam skrypt php  pracujący na bazie  mysql . Odświeżenie ekranu( przeładowanie strony)  powoduje zduplikowanie rekordu. Jak temu zapobiec ?
JoShiMa
W formularzu, który przesyła powinna być zmienna o wartości unikalnej wygenerowanej funkcją uniqid(''). Podczas przetwarzania formularza wrzucasz ą wartość do sesji a następnie dajesz warunek, że formularz może być przetworzony jedynie kiedy jego ID jest inne niż to w sesji. Wtedy masz pewność, że nie przetworzysz tego dwukrotnie przy odświeżaniu.
batman
Skrypt, który obiera dane, powinien je przetworzyć i zapisać do bazy/pliku/wysłać mailem/itd, a następnie wywołać funkcję header, do przekierowania na podziękowania/tej samej strony/itd. Dzięki temu nie będzie efektu ponownego dodania do bazy.

P.S.
Nie mogę teraz znaleźć, ale ten temat poruszany był na forum wiele razy.
butek
A jak  wrzucić wartość wygenerowaną przez uniqid do sesji ?
johndoe
$_SESSION['unikalne_id']=uniqid()
JoShiMa
Na samym początku skryptu

  1. <?php
  2. ?>


W formularzu:
  1. <input type="hidden" name="id" value="<?=uniqid('')?>" />


W miejscu gdzie przetwarzasz formularz:
  1. <?php
  2. if ($_POST["id"]<>$_SESSION["id"]) {
  3. $_SESSION["id"] = $_POST["id"];
  4. //przetwarzanie formularza
  5. }
  6. ?>
Shili
Odnośnie linku wspomnianego przez batmana - proszę bardzo
batman
@Shili
O właśnie. To jest jeden z tematów (szkoda, że nie znalazłaś takiego, w którym się udzieliłem winksmiley.jpg )

edit
W zasadzie, skoro temat był już poruszany, to ten można zamknąć.
Zamykam.
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.