Pokud chcete zabránit dvojímu odeslání, musíte uložit stav „je odesláno“ versus „není odesláno“. Máte několik možností, kam tyto informace uložit.
- Databáze - Přidejte skryté pole s automaticky vygenerovanou hodnotou, která je jedinečná (můžete vygenerovat krátký náhodný řetězec a připojit aktuální čas). Tuto hodnotu lze také použít k identifikaci konverzace – pokud potřebujete stavovou webovou konverzaci. Přidejte tuto hodnotu do databáze a udělejte ji jedinečnou. Nevýhody:redundantní úložiště v databázi, snížený výkon při vkládání komentářů, nutnost generovat jedinečný řetězec.
- Relace - Přidejte stejné skryté pole s hodnotou vygenerovanou v podobné záležitosti. Když uživatel odešle formulář, uložte hodnotu v relaci, pokud tam ještě není. Pokud ano, jde o dvojité podání. Nevýhody:stále musíte vygenerovat jedinečný token.
- Prohlížeč - (1) Přidejte nějaký javascript, abyste deaktivovali tlačítko Odeslat, jakmile na něj kliknete. (2) mají skryté pole, které začíná hodnotou 0 a změní se na 1, když uživatel klikne na tlačítko Odeslat. Pokud uživatel klepne na tlačítko znovu, zkontrolujete, zda je hodnota 1, a pokud ano, přerušte se. Výhody:žádný jedinečný řetězec. Nevýhody:vyžaduje povolený javascript; k implementaci stavových webových konverzací můžete stejně řetězec vyžadovat.