2014-10-27 68 views
-1

我嘗試了header('location:login.php');但不起作用,即使不會重定向頁面。有任何想法嗎? 我也試着用JavaScript來刪除輸入但重新提交不停止。 無論放在哪裏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的過程中,或者這應該是生產代碼? – 2014-10-27 13:27:00

+0

它應該是生產代碼。什麼部分是不必要的。? – user3561857 2014-10-27 13:33:26

+0

我會發佈一個答案來解決代碼本身,因爲它應該是生產。這是不安全的,SQL注入容易。同時,我建議接受John Conde的答案,因爲這是正確的答案。 – 2014-10-27 13:38:08

回答

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。基本上,您需要使用303 HTTP標頭進行重定向,以防止瀏覽器重新提交頁面。表單處理完後,您可以使用類似的方法來執行重定向:

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

這是正確的答案 – dnshio 2014-10-27 13:15:41