Podwójne wykonanie kodu po Submit

0

Witam,

przerabiam pewnego cms'a i w podstronie umieściłem kod, który prezentuję poniżej. Problem polega na tym, że każde naciśnięcie powoduje wpisanie dwóch rekordów w bazie. Nie wiem dlaczego tak się dzieje - nie widzę przyczyny w kodzie. Jeżeli ktoś ma jakieś sugestie w tym względzie to proszę o info bo zatrzymałem się z pracami.


<?php
$input_name = '<input type="text" name="contact_name" value="" size="35" />';
if ($_SERVER["REQUEST_METHOD"] == "POST"){
isset($_POST['contact_name']) ? $contact_name = addslashes($_POST['contact_name']) : $contact_name = '';
 
$nameErr='';  
   if (empty($contact_name))
     {$nameErr = '<span style="color:#d60e27;">Nie podałeś swojego imienia</span>';}       
// przypisanie poprzednio wpisanej wartości pól przy błędnej walidacji
    if (!empty($contact_name)) {
        $input_name =
            '<input type="text" name="contact_name" value="'.$contact_name.'" size="35" />';
    }
          if($nameErr==''){                
                SQLInsert
                                            (
                                                                "asks",
                                                                array("id", "ask_date", "sender", "sender_ip", "recipient", "content"),
                                                                array("NULL",time(),"some_email",$_SERVER['REMOTE_ADDR'],"some_dealer","text_of_message")
                                            );                                     
                //after sending clear variables
                $input_name = '<input type="text" name="contact_name" value="" size="35" />';                
                $nameErr='';
                $contact_name='';                                             
  }                       
}
echo'
<div style="width:360px; padding:5px;">
  <form method="post" action="">
    <div class="row">
      <span class="label">Twoje imię:</span><span
class="formw">'.$input_name.$nameErr.'</span>
    </div>
    <div class="row">
    <input type="submit" value="Wyślij" id="send" name="send" /><br /><br />
    </div>
 </form>
</div>';
?>

Pozdrawiam i z góry dziękuję za odpowiedzi

0

kod wygląda ok (oprócz tego, że nie mam kodu funkcji SQLInsert).

podebuguj najprostszą metodą - wypisuj sobie co parę linijek echo żeby wiedzieć który punkt kodu i ile razy się wykonuje. możesz też dopisać na początku pliku coś w rodzaju file_put_contents('test.txt', date('H:i:s').PHP_EOL, FILE_APPEND) - bo być może cały plik, a nie konkretne polecenie, wykonuje Ci się kilkukrotnie, tylko raz output "znika", a drugi - idzie do przeglądarki?

0

Może klikasz na przycisku submit dwukrotnie? ;-)

0

A masz zabezpieczenie przed użyciem wstecz w przeglądarce? Wtedy będzie efekt taki jak opisujesz.
W Firebugu (Firefox) możesz sprawdzić w zakładce sieć jakie requesty lecą. Ma przydatną funkcję zapamiętania, dzięki której przy nowych requestach wpisy poprzednich nie są czyszczone.

1 użytkowników online, w tym zalogowanych: 0, gości: 1