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
30.03.2005, 02:14:42
Przekierowac go na inna strone: header() -> szukaj na forum.
dr_bonzo
30.03.2005, 22:39:03
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.
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
31.03.2005, 06:41:56
<?php
// wybierz sobie linka a potem go
header( 'Location: '.$_SERVER['xxx'] );
?>
Wtedy ulega "oczyszczeniu" post
wszystko super, ale...
nie bardzo rozumiem zasade dzialania tego header()...
wykumalem linie:
<?php
header( 'Location: '.$_SERVER['SCRIPT_NAME'] );
?>
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.
Location - miejsce w ktore header odsyla
a uzywa sie tego miej wiecej w ten sposob
<?php
{
header( 'Location: '.$_SERVER['SCRIPT_NAME'] ); }
?>
poprostu przekierowujesz sie na strone przed formem....wtedy juz refresh nie bedzie dzialac
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
2.04.2005, 22:30:05
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!
hehe - wrocilem do tematu

bo nie jest specjalnie palacy

ale, wiecie co? to ob_start() nie pomoglo

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.