zabezpiecznie przed odświeżeniem

0

Witam

W jaki sposób zabezpieczyć się przed odświeżeniem witryny klawiszem F5 ?

0

No way. Nie da się.

0

A co zlego w odswiezeniu? Czego chcesz uniknac?

0
guest123 napisał(a)

Nie da się.

Da się, ale pod warunkiem, że ta strona już nie będzie istnieć ;)

Generujesz token i wysyłasz go przeglądarce, która wchodzi na stronę wyglądającą np. tak: plik.php?token=523453454353 gdzie ta duża liczba, to specjalnie wygenerowany kod dla sesji przechowujący informację o stronie, która ma się wyświetlić. Skrypt powinien być wykonany tak aby po zczytaniu owej zmiennej usuwał wszytkie informacje o niej.

To na 100% zadziała. Pytanie tylko dlaczego nie chcesz aby odświeżali Twoją stronę :>

0

Dlatego, że w bazie danych główne pole ID jest ustawione na AutoIncrement czy jak to woli Identity (MSSQL), a w kodzie PHP zaś jest ustawiona transakcja mssql_query("BEGIN TRANSACTION"); i w momencie kiedy user nie zatwierdzi zmian (COMMIT) buttonem, baza w transac.log (dziennik transakcji) pamieta numer ID, który się zwiększa przez choćby odświeżanie strony, bo wykonuje sie ponownie kod.....

0

W takim razie albo użyjesz coś w stylu tego co napisałem w poprzednim poście, albo zastąpisz autoincrement rezerwowaniem pola w tabeli i przekażesz numer tego pola przeglądarce - wtedy nie bedziesz mógł wykonać zapytania insert ponownie na tym samym id, albo po prostu sprawdzisz, czy podobny rekord nie jest już w tabeli.

0

Owszem , zgadza się gdybym miał taką możliwość to już dawno bym to zrobił, wywalił autoincrement, ale nie moge tego zrobić bo baza danych jest firmowa, posypały by się dane, dokumenty itd...

0

W takim razie albo stosujesz jednorazowy token we właściwości action formularza albo sprawdzasz czy podobne dane zostały już umieszczone w bazie.

Ewentualnie możesz skorzystać też z technologii AJAX. Wtedy przy odświeżeniu strony dane nie zostaną przesłane. Blokowanie odświeżania samego w sobie IMO nie ma sensu, bo za dużo rzeczy trzeba przewidywać. Weź pod uwagę, że nie tylko odświeżanie jest tu problemem, bo wystarczy, że użytkownik użyje guzika WSTECZ.

1 użytkowników online, w tym zalogowanych: 0, gości: 1