Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Closed TopicStart new topic
> [PHP][MYSQL]Odświeżanie ekranu
butek
post
Post #1





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 3.05.2008

Ostrzeżenie: (0%)
-----


Mam skrypt php  pracujący na bazie  mysql . Odświeżenie ekranu( przeładowanie strony)  powoduje zduplikowanie rekordu. Jak temu zapobiec ?

Ten post edytował butek 2.07.2008, 18:58:37
Go to the top of the page
+Quote Post
JoShiMa
post
Post #2





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
batman
post
Post #3





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




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.
Go to the top of the page
+Quote Post
butek
post
Post #4





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 3.05.2008

Ostrzeżenie: (0%)
-----


A jak  wrzucić wartość wygenerowaną przez uniqid do sesji ?
Go to the top of the page
+Quote Post
johndoe
post
Post #5





Grupa: Zarejestrowani
Postów: 13
Pomógł: 2
Dołączył: 2.07.2008

Ostrzeżenie: (0%)
-----


$_SESSION['unikalne_id']=uniqid()
Go to the top of the page
+Quote Post
JoShiMa
post
Post #6





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post
Shili
post
Post #7





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

Ostrzeżenie: (0%)
-----


Odnośnie linku wspomnianego przez batmana - proszę bardzo

Ten post edytował Shili 2.07.2008, 19:38:42
Go to the top of the page
+Quote Post
batman
post
Post #8





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




@Shili
O właśnie. To jest jeden z tematów (szkoda, że nie znalazłaś takiego, w którym się udzieliłem (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) )

edit
W zasadzie, skoro temat był już poruszany, to ten można zamknąć.
Zamykam.
Go to the top of the page
+Quote Post

Closed TopicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 14:52