Zadejte hledaný výraz...

Dvojite odoslanie formularu

node
verified
rating uzivatele
(5 hodnocení)
29. 7. 2015 10:13:19
Ahojte,
ako najlepsie programovo zabranit odoslaniu konkretneho formularu viac nez jeden krat? Napriklad pouzivatel odosle formular, ten sa spracuvava prilis dlho tak uzivatel stlaci submit znovu a znovu cim mozu vzniknut duplicity.
Aktualne pouzivam JS ale chcem skor nieco na backende, nieco solidnejsie.
29. 7. 2015 10:13:19
https://webtrh.cz/diskuse/dvojite-odoslanie-formularu/#reply1129931
azka
verified
rating uzivatele
(2 hodnocení)
29. 7. 2015 10:35:33
Co zpracovavas za data, ze redirect nepomaha? Jak vubec vypada takovej web, kde se formular zpracovava dlouho? Mel jsem vzdy za to, ze mezi zapisem do db a redirectem nic neni a zapis je kratkej atomickej dotaz, kterej se bud provede a nebo ne.
Pokud tam zapisujes hodne balastu, tak jedine to odeslat jako jednu transakci BEGIN..COMMIT a tudiz zajistis, ze se ti vlozi vse a nebo nic.
Nevim, co primo resis za problem, toto jsem snad nikdy neresil, nicmene mismas reseni by bylo vlozit nejaky ID formulare a na prvni odeslani udelat lookup, zda jiz neexistuje a pote ho ulozit a provest, pokud existuje tak nic neprovadet a vyhodit chybu?
29. 7. 2015 10:35:33
https://webtrh.cz/diskuse/dvojite-odoslanie-formularu/#reply1129930
Fido123
verified
rating uzivatele
(13 hodnocení)
29. 7. 2015 10:50:43
Já tomu dotazu taky moc nerozumím. Co to znamená, že formulář se zpracovává dlouho? Možná bude lepší, když popíšeš konkrétní situaci, protože se mi zdá, že řešíš jiný problém, než ve skutečnosti máš.
29. 7. 2015 10:50:43
https://webtrh.cz/diskuse/dvojite-odoslanie-formularu/#reply1129929
protected
verified
rating uzivatele
(13 hodnocení)
29. 7. 2015 11:14:11
Já dotazu rozumim a řešení je:
- pokud se formulář po submitu načítá, tak přes js udělat nějaký loading gif místo tlačítka submit
- před zápisem do dtb zkontrolovat, zda už totožná hodnota zapsána není (pokud duplicity nejsou relevantní)
- popř. odeslat formulář s nějakou get hodnotou, kterou do dtb zapíšeš a budeš na základě ní filtrovat duplicitu
ideální řešení však je, aby se dlouho nenačítalo :-)
29. 7. 2015 11:14:11
https://webtrh.cz/diskuse/dvojite-odoslanie-formularu/#reply1129928
Petr Soukup
verified
rating uzivatele
(5 hodnocení)
29. 7. 2015 13:28:51
Pozor na to, že nejde jen o dvojí zmáčknutí. Prohlížeč se také může rozhodnout poslat požadavek dvakrát - typicky to bývá problém u uživatelů s balancovaným připojením.
Dvojí zmáčknutí se nejhloupěji řeší tak, že se prostě po zmáčnutí submit změní na disabled.
29. 7. 2015 13:28:51
https://webtrh.cz/diskuse/dvojite-odoslanie-formularu/#reply1129927
node
verified
rating uzivatele
(5 hodnocení)
29. 7. 2015 14:02:45
Cize ak to spravne chapem, tak uplne prva vec ktora by sa mala po odoslani riesit je zapis informacie, niekam, ze tento formular sa uz spracoval. Pri prvom odoslani sa poziadavok normalne spracuje ale pri druhom(neriesim ci nahodnom alebo umyselnom) sa to stopne hned na zaciatku pred vykonanim akejkolvek logiky, pretoze spominany indikator uz bol oznaceny. Hm, ked to vezmem takto tak to znie celkom logiky.
Vdaka za info.
29. 7. 2015 14:02:45
https://webtrh.cz/diskuse/dvojite-odoslanie-formularu/#reply1129926
boolk
verified
rating uzivatele
29. 7. 2015 15:33:39
Ano, pokud člověk potřebuje na formulářích trochu robustnosti nebo bezpečnosti, tak se to řeší zhruba jak říkáte. Současně se např. hlídá, že když mi na server z klienta přijdou formulářová data, jestli v nějaké přednastavené době před tím si ten klient vyžádal webovou stránku s příslušným formulářem.
Kolem formulářů je docela dost práce, je to jeden z důvodů, proč hodně lidí sáhne raději po nějakém frameworku nebo CMS, kde už je vyřešil někdo jiný.
29. 7. 2015 15:33:39
https://webtrh.cz/diskuse/dvojite-odoslanie-formularu/#reply1129925
azka
verified
rating uzivatele
(2 hodnocení)
29. 7. 2015 16:17:19
Napsal protected;1213659
Já dotazu rozumim a řešení je:
- pokud se formulář po submitu načítá, tak přes js udělat nějaký loading gif místo tlačítka submit
- před zápisem do dtb zkontrolovat, zda už totožná hodnota zapsána není (pokud duplicity nejsou relevantní)
- popř. odeslat formulář s nějakou get hodnotou, kterou do dtb zapíšeš a budeš na základě ní filtrovat duplicitu
ideální řešení však je, aby se dlouho nenačítalo :-)
prvni bod je odpoved na uplne jinou otazku, nez na kterou se op ptal
druhy bod; kdyby psal vse psal pod 1 malou transakci, tak by to probehlo skoro v "instantnim" case (pokud db neni prehlcena), takze je to nonsense; toto vypada, ze op zapisuje tuny dat - jak chces u takovejch dat zkontrolovat duplicitu?
treti bod je nejspis to, co jsem popsal jako mismas reseni
ale je dobre, ze ty jsi tomu porozumel :)
29. 7. 2015 16:17:19
https://webtrh.cz/diskuse/dvojite-odoslanie-formularu/#reply1129924
Pro odpověď se přihlašte.
Přihlásit