Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zabezpieczenie przed odświerzeniem...
Forum PHP.pl > Forum > PHP
SHiP
Napisałem prosty skrpyt wsyłający dane getem. Jednak gdy odświerze strone skrypt wykonuje sie jeszcze raz :]. Szukam jakiegoś sposobu aby temu zapobiec ale jakoś jeszcze nic nie wykombinowałem. Od razy mówię ze wysyłam dane do tego samego pliku tzn do siebie samego dlatego sprawdzenie refera nic nie daje ;/
czachor
Najprościej: ustaw sobie jakąś zmienną również wysyłaną getem, potem sprawdzaj, jeżeli już jest (isset), to nie wykonuj skryptu.
Albo wykorzystaj sesje, ciastka...
TomASS
Dokładnie, zrób sobie np.:

  1. <?php
  2.  
  3. $zmiennaS = $_SESSION['zmiennaS'];
  4.  
  5. if(!$zmiennaS){
  6.  $zmiennaS = 1;
  7.  session_register("zmiennaS");
  8.  
  9.  //wykonaj skrypt
  10.  
  11. }
  12. else{
  13.  //nie wykonuj skryptu
  14. }
  15.  
  16. ?>


Tylko to narazie przychodzi mi na chypcika do główki-makówki smile.gif
czachor
ciut poprawek do mojego Przedmówcy smile.gif
  1. <?php
  2.  
  3. if (!$_SESSION['zmiennaS'])
  4. {
  5. $_SESSION['zmiennaS'] = 1;
  6. //wykonaj skrypt
  7. }
  8. else
  9. {
  10. //nie wykonuj skryptu
  11. }
  12. ?>
TomASS
Dokładnie smile.gif
SHiP
Juz rozwiązałem problem wysyłając jeszcze jedną zmienną która przy przetwarzaniu zmieniała wartość w bazie. A po odświerzeniu sprawdzałem czy ta z get i z bazy są identyczne.. jeśli nie to nie wykonywałem skryptu...
Co do sesji.. ale jeśli klikne jeszcze raz w link żeby wykonać jeszcze raz to chyba to nie zadziała ;P bo sesja nadal będzie aktywna....
TomASS
No lepiej nie ustawiaj żadnej zmiennej w bazie danych - jeśli jest to tabela jakichś produktów, czy czegokolwiek, to po co dokładać jeszcze jedno pole nikomu nie wiadomo po co? Zawsze musisz robić update do bazy, a to troszkę trwa, wyciąganie tego też. Zrób to tak jak Ci napisaliśmy - w sesjach. Za drugim razem skrypt się nie wykona ponieważ zmienna $_SESSION['zmiennaS'], będzie miała już ustawioną wartość 1

  1. <?php
  2.  
  3. if (!$_SESSION['zmiennaS'])
  4. {
  5. //to sie nie wykona ponieważ zmienna $_SESSION['zmiennaS']) bedzie rowna 1
  6. }
  7. else
  8. {
  9. //to sie wykona - czyli nic
  10. }
  11.  
  12. ?>


Może nie zuważyłeś wykrzyknika przed $_SESSION....
Seth
Bylo na forum.
http://forum.php.pl/index.php?showtopic=28150
SHiP
Heh dodatkowego pola nie tworze... moze wytłumacze mój przykład... Mam mape i strzałki w 4 kierunkach. Jeśli klikne w jakaś zmienia się moja pozycja i odejmuje 1 energi. Jeśli ustawie zmienną sysyjną to nie będe mógł jeszcze raz kliknąć w strzałke ;] bo mi tego nie uzna.

PS: Czy moze sie myle i sesje chodzą tylko za pierwsym razem? o.O
TomASS
Oj widzę, że się tych sesji lękasz. Poprostu ustawisz zmienną, która będzie pamiętana aż do zamknięcia przeglądarki. (w zasadzie to do usunięcia ID sesji)
SHiP
No ale nie o to mi chodzi!! Ja chce zabezpieczyć strone przed odświerzeniem(F5 na klawiaturce) a nie przed ponownym wywołaniem skryptu tzn kliknięciem jeszcze raz w link...
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.