JanKoWeb: Tvorba webu - Odesílání formuláře: zabránění vícenásobnému odeslání
"Nemusí pršet, stačí když kape..."
JanKoWeb - návody, postřehy a rady ze světa softwaru pro každého.
Recenze knih a humorná tvorba pro chvíle oddechu...

Do západu slunce 6 hodin a 28 minut (vyšlo 05:06, zapadne 21:09).

"1"

V. Havel
Galerie nemohla být načtena.
Jméno:
Číselně: šest a jedna je
tak teď nevím... Už jsi psal do Guestbooku, cizinče?
Při každém obnovení stránky se zde vypíše zpráva skriptu.

Skript je zdrojový kód interpretovaného programu.

Pohání celý tento web a rád komunikuje s návštěvníky.-)
RSS RSS zdroj článků a novinek

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 | 5471x

Náhodné články

© 2008-2025 JK, kontakt, právní upozornění
Powered by Janko's RS| XHTML, CSS, RSS, analýza kódu, SEO servis, dostupnost, hosting, líbí se Vám tu?
Požadavek: 0.82786 s, generování: 0.02331 s, paměť: 1.21 MB, sql dotazů: 8, CPU: 23.81

.