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...
Mezinárodní den biologické rozmanitosti.

Do východu slunce 6 hodin a 12 minut (vyjde 08:09, zapadne 16:00).

"Nezbytným krokem k tomu, abyste od života získali věci, po kterých toužíte, je rozhodnout se, co vlastně chcete."

B. Stein
Galerie nemohla být načtena.
Jméno:
Číselně: devět a devět je
Každá chvilka strávená plánováním práce ušetří tři nebo čtyři chvilky při jejím provádění.
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 | 5523x

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.3348 s, generování: 0.05105 s, paměť: 1.21 MB, sql dotazů: 8, CPU: 15.10

.