2014-10-27 2 views
-1

Я пробовал с заголовком ('location: login.php'); но не работает, даже не имеет права перенаправлять страницу. Есть идеи? Я пробовал также с JavaScript для удаления входов, но повторная передача не останавливалась. Независимо от того, где put header ('location: login.php'); это не сработает.Как остановить повторную отправку php

if(isset($_POST['vrsta_predmeta']) AND !empty($_POST['vrsta_predmeta']) AND 

    isset($_POST['res_text']) AND isset($_POST['glavni_dug']) AND isset($_POST['res']) AND isset($_POST['zaklj']) AND isset($_POST['povjerilac']) AND isset($_POST['duznik']) AND isset($_POST['predmet_zaveden'])){ 


    $racunob = trim($_POST['rac']); 
    $obrazlozenje = trim($_POST['obr']);  
    $ob_text = trim($_POST['res_ob']); 
    $res_text = trim($_POST['res_text']); 
    $vrsta_pre = trim($_POST['vrsta_predmeta']); 
    $izvrsenje = trim(strtolower($_POST['res'])); 
    $obrazac = trim($_POST['zaklj']); 
    $povjerilac = $_POST['povjerilac']; 
    $duznik = $_POST['duznik']; 
    $datum= trim($_POST['predmet_zaveden']); 
    foreach($povjerilac as $key){ 
    $lica = $db -> prepare("INSERT INTO p_lica(povjerilac, doc_br, dokument_vlasnik) VALUES('$key', '$dok_broj', '$ses_val')"); 



    }  


    foreach($duznik as $key1){ 
    $lica1 = $db -> prepare("INSERT INTO d_lica(duznik,doc_br, dokument_vlasnik) VALUES('$key1', '$dok_broj', '$ses_val')"); 


    } 

    $insert_dok = $db -> prepare("INSERT INTO document_tbl(dokument_vlasnik,dokument_broj,vrsta_dokumenta,zakljucak, resenje_izvrsenja,datum,resenje_text,obrazlozenje,obtext,racunob) VALUES('$ses_val','$dok_broj', '$vrsta_pre','$obrazac','$izvrsenje','$datum','$res_text','$obrazlozenje','$ob_text','$racunob')"); 
    if($lica -> execute() AND $insert_dok -> execute() AND $lica1 -> execute()){ 


     $lica -> close(); 
     $lica1 -> close(); 
     $insert_dok -> close(); 


     echo '<script>new Messi(\'Dokument uspjesno dodat.\', {title: \'Obavjestenje\', titleClass: \'success\', buttons: [{id: 0, label: \'Close\', val: \'X\'}]});</script>'; 
    header('location:login.php'); 
     }else{ 
     echo '<script>new Messi(\'Dokument uspjesno dodat.\', {title: \'Obavjestenje\', titleClass: \'anim warning\', buttons: [{id: 0, label: \'Close\', val: \'X\'}]});</script>'; 
    } 

} 
+0

Почему вы используете подготовленные операторы, если вы не являетесь обязательным для одного параметра? Половина вашего кода совершенно не нужна. Вы в процессе изучения PHP или это должен быть производственный код? –

+0

Это должен быть код производства. Какая часть не нужна? – user3561857

+0

Я отправлю ответ, чтобы обратиться к самому коду, так как это должно быть производство. Это небезопасно, а SQL-инъекция подвержена. Между тем, я предлагаю принять ответ Джона Конде, поскольку он правильный. –

ответ

3

Вы не можете перенаправить после вывода содержимого. Поскольку вы выходите на JavaScript, вам нужно будет изменить свое перенаправление, выполняемое JavaScript.

echo '<script>new Messi(\'Dokument uspjesno dodat.\', {title: \'Obavjestenje\', titleClass: \'success\', buttons: [{id: 0, label: \'Close\', val: \'X\'}]});</script>'; 
header('location:login.php'); 
//^^^ This won't work. 
// Try this instead. Redirects five seconds after the page is loaded. 
echo 'window.setTimeout(function() {window.location = "login.php"}, 5000);'; 

Что касается проблемы формы повторной подачи, вам необходимо реализовать POST/REDIRECT/GET pattern. В принципе, вам нужно сделать переадресацию с HTTP-заголовком 303, чтобы предотвратить повторную отправку страницы браузером. После обработки формы вы будете использовать что-то вроде этого, чтобы сделать свое перенаправление:

header('Location: /login.php', true, 303); 
exit; 
+2

Это правильный ответ – dnshio

Смежные вопросы