Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php i mysql] jak zabezpieczyc sie przed refresh?
Forum PHP.pl > Forum > Przedszkole
rml
witam,

jest skrypt powiedzmy dodaj.php ktory obsluguje polecenie dodania do bazy danych rekordu.

user uruchamia go linkiem i skrypt dodaje do bazy danych odpowiednie wpisy podawane przez <form>.
ale w momencie gdy user nacisnie refresh wszystkie te dane sa dodawane jeszcze raz! co zrobic zeby sie przed tym zabezpieczyc?

i niestety nie moge zrobic tak, ze jesli dany wpis juz istnieje to ma nie wpisywac, bo wpisuje zmienna ktora bycmoze trzeba bedzie wpisac ponownie...


pozdro,
rml.
dr_bonzo
Przekierowac go na inna strone: header() -> szukaj na forum.
rml
a czy sa inne sposoby?
dr_bonzo
Oczywiscie mozna to zrobic w php a nie w JS: setcookie()
Cookiesy zabezpiecza cie przed refreshem (tzn przypadkowym odswierzeniem strony) ale user moze usunac/zablokowac cookie i bedzie mogl dodawac rekordy.
rml
ha,

widzicie... zbieranie IP to jest idea - ale nie w moim przypadku - moze napisze konkretnie o co mi chodzi:

mam koszyk do ktorego ktos dodaje produkt - 1 szt. i teraz na stronie ktora sie pokazuje jako wynik dodania do koszyka - jesli on kliknie refresh to skrypt doda kolejna sztuke do koszyka...

co zrobic zeby tak sie nie dzialo?
hwao
  1. <?php
  2. echo '<pre>'.print_r( $_SERVER, true ).'</pre';
  3. // wybierz sobie linka a potem go
  4.  
  5. header( 'Location: '.$_SERVER['xxx'] );
  6.  
  7. ?>

Wtedy ulega "oczyszczeniu" post
rml
wszystko super, ale...

nie bardzo rozumiem zasade dzialania tego header()...

wykumalem linie:

  1. <?php
  2.  
  3. header( 'Location: '.$_SERVER['SCRIPT_NAME'] );
  4.  
  5. ?>


ale gdzie mam ja wstawiac? na poczatku pliku ktory chce zabezpieczyc przed refresh? czy na koncu? co to jest Location: ? w html w head nigdy nie widzialem czegos takiego...


pozdro,
rml.
vala
Location - miejsce w ktore header odsyla
a uzywa sie tego miej wiecej w ten sposob
  1. <?php
  2.  
  3.  
  4. if(mysql_query($bleble))
  5. {
  6.  header( 'Location: '.$_SERVER['SCRIPT_NAME'] );
  7. }
  8.  
  9.  
  10. ?>



poprostu przekierowujesz sie na strone przed formem....wtedy juz refresh nie bedzie dzialac
rml
wszystko fajnie, tylko ze jak cos takiego robie to on krzyczy ze headersy zostaly juz wyslane i ze nie moze tego odpalic...


regs,
rml.
strife
Cytat(rml @ 2005-04-02 20:47:12)
wszystko fajnie, tylko ze jak cos takiego robie to on krzyczy ze headersy zostaly juz wyslane i ze nie moze tego odpalic...


regs,
rml.

Witam,

Wpisz na początku ob_start();

Pozdrawiam!
rml
hehe - wrocilem do tematu smile.gif bo nie jest specjalnie palacy winksmiley.jpg ale, wiecie co? to ob_start() nie pomoglo smile.gif nadal wywala warning, ze headersy zostaly wyslane...

any ideas?


pozdro,
rml.
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.