JanKoWeb: Tvorba webu - Odesílání formuláře: zabránění vícenásobnému odeslání

Odesílání formuláře: zabránění vícenásobnému odeslání

Stručný přehled možností řešení zabránění vícenásobného odeslání formulářů.

Já osobně používám následující postup: při odeslání formulář pošlu aktuální stránce. V případě, že je třeba doplnit nějaká pole, zobrazím formulář s chybovými hláškami, které dostanu právě vyhodnocením odeslaného formuláře.

Když je vše v pořádku, ještě než začnu vytvářet HTML stránku, použiji v php Header("Location: AKTUALNI_STRANKA"); (čímž zabráním znovu odeslání při obnovení stránky) a do parametru připojím proměnnou "sended", kterou posléze v novém načtení stránky vyhodnotím a místo formuláře zobrazím informaci o úspěšném odeslání formuláře.

Přesměrování

Přesměrování se v php dá udělat pomocí funkce:

Header("Location: AKTUALNI_STRANKA");
Pozor! Tato funkce musí být zavolána ještě přes jakýmkoli výpisem z php na obrazovku.

Zašednutí tlačítka Odeslat

Proti vícenásobnému odeslání vlivem vícenásobného kliknutí na tlačítko Odeslat (rychle za sebou) můžeme s pomocí Javascriptu při prvním odeslání zakázat (zašednout) odesílací tlačítko, například takto:

function Validace(f) {   
    if (f.vstup.value == "")
    { // je-li pole vstup prazdne
       // vyhodime upozorneni
       alert('Vyplnte vstup.');
       // dame kurzor do prislusne kolonky
       f.vstup.focus();
       // zakazeme odeslani
       return false;
    }
    else {
       // zasedneme tlacitko Odeslat
       f.operace.disabled = true;
       // povolime odeslani
       return true;
    }
 }
/* ]]> */
</script>
<form action="" method="post" onsubmit="return Validace(this);">
 <input name="vstup" type="text" value="" /> 
 <input name="operace" type="submit" value="Odeslat" />
</form>

Rubrika Tvorba webu | Tagy Formulář, Odeslání, Vícenásobné | So 30.04.2011 | 5359x

Náhodné články

Tento web jsem zakládal na střední, v roce 2008. Je zde hlavně archiv mé tvorby.

Aktuální věci publikuji kvůli úspoře času na Twitter.

Honza

"I kdybyste byli na správné cestě, pokud tam budete jen tak dřepět, může vás nanejvýš něco přejet."

W. Rogers