Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]Odświeżanie ekranu
butek
post 2.07.2008, 18:50:57
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
 
Start new topic
Odpowiedzi (1 - 7)
JoShiMa
post 2.07.2008, 18:57:31
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 2.07.2008, 19:01:30
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.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
butek
post 2.07.2008, 19:05:07
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 2.07.2008, 19:08:17
Post #5





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

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


$_SESSION['unikalne_id']=uniqid()


--------------------
no body's perfect http://badzkasia.pl
Go to the top of the page
+Quote Post
JoShiMa
post 2.07.2008, 19:10:55
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 2.07.2008, 19:38:01
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 2.07.2008, 19:41:05
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 winksmiley.jpg )

edit
W zasadzie, skoro temat był już poruszany, to ten można zamknąć.
Zamykam.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 15.07.2025 - 19:50