Autor | Zpráva | ||
---|---|---|---|
vratimov Profil * |
#1 · Zasláno: 23. 2. 2010, 13:00:59
aho,
první popíšu situaci: mám index.php, na něm form který se odesila na soubor action.php, zde se provedou o operace a následně dojde k přeměrování zpět na index.php pomoci 'header location'. V tomto location jsou předávány GET proměnné. A tady je problém, potřeboval bych, abych byl schopný poznat, kdy jsou tyto proměnné předávány těsně po presměrování a ne třeba po tom, co na odkaz s těmito proměnnýma uživatel klikne v historii prohlížeče. Zkoušl jsem SEREVER referer, ovšem ten nefunguje. nějaké napady? díky |
||
AM_ Profil |
#2 · Zasláno: 23. 2. 2010, 15:59:32
Nelze. Každopádně ne spolehlivě.
Řeší se to obvykle takto: formular.php -- (odkaz, odesílá požadavek na změnu dat na serveru)--> zpracuj.php - (header location) --> zpracovano.php. Tímto postupem se zpracuj.php do historie prohlížeče neuloží, a tudíž nedojde k nedopatřenému dvojímu odeslání dat. |
||
tiso Profil |
#3 · Zasláno: 23. 2. 2010, 16:23:17
AM: „... a tudíž nedojde k nedopatřenému dvojímu odeslání dat.“
Nemáš pravdu, dvojklik na odosielacie tlačítko dáta odošle viackrát. |
||
Perry Profil |
#4 · Zasláno: 23. 2. 2010, 19:13:07
Dvoj-odesláni se dá vyřešit třeba vytvořením SESSION po prvním uložení dat. A po header location se zase smaže... tím by se měl eliminovat víceklik na submit.
|
||
AM_ Profil |
#5 · Zasláno: 23. 2. 2010, 19:47:46
tiso:
„Nemáš pravdu, dvojklik na odosielacie tlačítko dáta odošle viackrát.“ To je pravda, myslel jsem v případě proklikávání historií. Dvojklik na odesílací tlačítko je zase jiná kapitola. Perry: „Dvoj-odesláni se dá vyřešit třeba vytvořením SESSION po prvním uložení dat“ Vzhledem k tomu, že to není atomická operace, tak raději před uložením :) ale bohužel ani tak to není 100% spolehlivé, pokud přijdou dva požadavky těsně po sobě, otevřou se oba skripty s prázdnou SESSION. Pokud to má být zcela neprůstřelné, je to docela zajímavá úloha vymyslet na to synchronizační mechanismus. |
||
vratimov Profil * |
#6 · Zasláno: 24. 2. 2010, 13:00:09
tak nakonec jsem to vyřešil těma sessions
díky všem |
||
Časová prodleva: 13 let
|
0