sql >> Databáze >  >> RDS >> Mysql

Jaké jsou některé metody, jak zabránit dvojitému zaúčtování ve formuláři? (PHP)

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.


  1. Jak mohu urychlit dotaz MySQL pomocí klauzulí WHERE ve dvou sloupcích?

  2. pomocí if a else uložených procedur MySQL

  3. Rozdíl mezi vnitřním a vnějším spojením v SQL

  4. Uživatelem definované proměnné v PostgreSQL