Podwójne wykonanie kodu po Submit

Podwójne wykonanie kodu po Submit
FO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
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.

Kopiuj

<?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

dzek69
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Rzeszów
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?

ŁF
  • Rejestracja: dni
  • Ostatnio: dni
0

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

Sarrus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2512
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.