Autor Zpráva
tomas2245
Profil
Zdravím,

mám HTML formulár ktorý spracovávam pomocou PHP. Všetko funguje, ale problém nastáva vtedy, keď napr. viac krát za sekundu kliknem na ,,ODOSLAŤ".
Vtedy sa mi do databázy napíše toľko záznamov, koľko krát som klikol. Dá sa to nejak zabezpečiť? po kliknutí na odoslať mám kód ktorý ma presmeruje na inú lokalitu pomocou: header("niekam.php");

Budem rád za každé rady :)
Taps
Profil
Podle me je toto standartni chovani formulare..pak se da pridatt jeste treba casova kontrola ( stejny formular nemuze byt odeslan napr v ramci 10 sekund)
Enko
Profil
Nebo přes javascript po kliku na odesílací tlačítko toto tlačítko disablovat. Nebo v databázi udělat unikátní klíč na více sloupci včetně času odeslání, aby záznam nebyl duplicitní.
serverteam.sk
Profil
Nebo přidat podmínku že pokud již záznam je tak se neuloží, ale nevím co pomocí formuláře ukládáš do databáze.
tomas2245
Profil
Taps:
dobrý nápad, vedel by si mi prosím ťa dať príklad na takú časovú kontrolu?

Enko:
tohoto sa práveže bojím, aby nejaké staré prehliadače ten input nenastavovali automaticky ako disable aj bez kliknutia...

serverteam.sk:
toto by tak fungovať nemohlo, je to objednávkový systém a niekto môže mať viac objednávok...
Keeehi
Profil
tomas2245:
tohoto sa práveže bojím, aby nejaké staré prehliadače ten input nenastavovali automaticky ako disable aj bez kliknutia.
Pokud to napíšeš správně, tak se toho bát nemusíš.
tomas2245
Profil
Ok, vyriešené keby niekto do budúcna mal rovnaký problém ako ja tak tu máte riešenie:

<script type="text/javascript">

  var form_odoslany = false;

  function checkForm(form)
  {
    if(form.meno.value == "") {
      alert("Prosím napíšte svoje meno");
      form.meno.focus();
      return false;
    }
    if(form.priezvisko.value == "") {
      alert("Prosím napíšte svoje priezvisko");
      form.priezvisko.focus();
      return false;
    }
    return true;
  }
</script>

<form method="POST" action="#" onsubmit="
  if(form_odoslany) {
    posli.disabled = true;
    return false;
  }
  if(checkForm(this)) {
    form_odoslany = true;
    return true;
  }
  return false;
">

<p>Meno: <input type="text" name="meno" required>
<p>Priezvisko: <input type="text" name="priezvisko" required
<p><input type="submit" name="posli">
</form>

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: