Autor Zpráva
Rad
Profil
Dobrý den,
dlouho mám problém s vkládáním záznamu do mysql databáze z formuláře v IE. Po vyplnění polí a odeslání ke zpracování pomocí PHP se POUZE v prohlížečí IE vloží záznam dvojitě - jako by se odeslal dvakrát. Ani google mi nepomohl. Nevíte, prosím, někdo, jak to ošetřit?

Kód:

    require "./db_spojeni.php";

    $vzkaz=$_POST['vzkaz'];
    $jmeno=$_POST['jmeno'];

$sql_prikaz="INSERT INTO vzkaznik(text,jmeno,datum,id) "
             ."VALUES('"
             .mysqli_real_escape_string($db_spojeni,$vzkaz)
             ."','"
             .mysqli_real_escape_string($db_spojeni,$jmeno)
             ."',NOW(),NULL)";

$zapis=mysqli_query($db_spojeni, $sql_prikaz);

if ($zapis)
{
  echo 'Příspěvek byl vložen';
  mysqli_close($db_spojeni);
  echo '<script language="JavaScript">
        <!--
        window.location="./index.php?stranka=vzkaznik#0";
        // -->
        </script>';
}
else
{
  echo '<span class="tlako muj_font">Chyba!</span><br><br>';
}
Kajman
Profil
Po zápisu přesměrujte přes http hlavičku ne přes javascript.

if ($zapis)
{
  mysqli_close($db_spojeni);
  header("Location: ./index.php?stranka=vzkaznik#0");
  exit;
}
Rad
Profil
Vyzkouším, děkuji moc za pomoc.
Rad
Profil
Tak to bohužel nepomohlo :-( Už nevím, co s tím...
Kajman
Profil
Ještě můžete zkusit ošetřit doubleclick, něco jako

Vícenásobný submit
skript ruší posílání submit name
Chamurappi
Profil
Reaguji na Rada:
se POUZE v prohlížečí IE vloží záznam dvojitě - jako by se odeslal dvakrát
A ve skutečnosti se odesílá kolikrát? Co vidíš třeba ve Fiddlerovi?
To odeslání se děje úplně normálně? Žádný JS do toho neintervenuje? Žádný AJAX? Žádné volání submitu z onsubmitu? O takovéto chybě slyším prvně.
leorond
Profil
Co zkusit omezit odesílání například antispamovou otázkou nebo nějakou časovou prodlevou před odesíláním nového formuláře?


Ještě bych se zeptal, toto je celý script?

žádná podmínka $_GET nebo $_POST? Myslím tím například na začátek uložit if(isset($_POST["zpracovat"]))


Jelikož kdyby toto byl celý script tak kdyby na něj někdo jen přišel třeba přes URL tak už se zapisuje do databáze

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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