Dzieja mi sie dziwne rzeczy.
W skrypcie PHP wstawilem instrukcje pg_Exec z insertem i, co ciekawe,
zdarzaja sie przypadki, ze zapisze mi w bazie (PostgreSQL) rekord podwojnie
(kilka procent).
Zaznaczam, ze nie jest to na pewno wynik odswiezania strony, sprawdzilem,
oba rekordy sa zapisane w identycznym czasie.
Zdarzylo sie cos takiego komus??
Help!
Slawek
nigdy mi sie cos takiego nie zdarzylo
pozdr
aasat
Formularz, a wlasciwie jego dane, przekazywane sa javascriptem do okienka
popup, a submit jest zablokowany.
Poza tym, gdyby byl podwojny submit, to pewnie 100% rekordow byloby
zdublowanych, a sa tylko wybiorcze i , jak dotad, nie mam pojecia na jakiej
zaleznosci sie to opiera.
> Tak pytam bo 95% przypadków z podwójnym insertem to blad w logice skryptu
> badz podwojny submit ?
>
>
Przed insertem jest polecenie kasujace kazdy podobny wpis (juz tak sie "na
chama" zabezpieczylem), wiec teoretycznie kazdy wpis powinien byc
poprzedzony malym czyszczeniem.
Jako parametru czasu uzylem funkcji time() - dla odswiezen, mam nadzieje,
powinna wystarczyc?
A jakie jest to pozostale 5 %?
SLawek
tak. explorery glupieja. sprawdz w logach serwera WWW. taki explorer
potrafi
odeslac formularz do serwera dwa razy.
--
/===================================\ oOOo (C) Publikacja tego
| http://avalon.wbc.lublin.pl/~znik/ \===\__/==\ artykulu wymaga
| Grzegorz Szyszlo mailto:zn...@wbc.lublin.pl | rzetelnosci
\==============================================/ dziennikarskiej.
Masz pomysl, jak sie przed takim cudem obronic, czy od razu instalowac
przegladarke "alternatywnego producenta"??
Pozdr
Slawek
Pozdr
Slawek
> O to, to ,tooooo!
>
> Masz pomysl, jak sie przed takim cudem obronic, czy od razu instalowac
> przegladarke "alternatywnego producenta"??
znam tylko jeden sposob. zakladasz sobie sekwencje, a we wszystkich
formularzach
wrzucasz pole ukryte do ktorego te sekwencje upychasz.
robisz tez baze zrealizowanych zapytan/operacji, z jedna kolumna,
zapisanymi sekwencjami, i jedynym unikalnym primary_key.
formularz cos zapisuje, wiec najpierw probujesz upchnac numer do bazy
wykonanych operacji. jak sie dalo upchnac, robisz to co zwykle.
jak sie nie da, to nie upychasz, jedynie realizujesz sama informacje
zwrotna ze upchniecie sie powiodlo.
btw. taka baze sekwencyjna musisz co jakis czas czyscic, bo bedzie ci
tylko
plac zapychac :) w kazdym razie jak sadze, jest to dobra ochrona
przed wybrykami microsoftu.