2014-11-03 4 views
1

AJAX를 사용하여 데이터베이스의 테이블에 데이터를 추가하려고하는데 문제가 있습니다. 이제는 스크립트가 작동하기 때문에 하나의 필드 만 추가되고 다른 필드는 추가되지 않으며 이유가 확실하지 않습니다. 내가 게시 한 내용에 SQL 주입 취약점이 있다는 것을 알고 있지만이 데모 프로젝트의 기능을 작동 시키려고합니다.AJAX를 사용하여 데이터베이스에 데이터를 추가하는 데 문제가 발생했습니다.

HTML

<div id="form_emergencies" class="form_view"> 
    <div class="half" id="systems"></div> 
    <div class="half" id="malfunctions"></div> 
</div> 

jQuery를

var Alerts = { 
    apu: [["APU Power Fail", "APU[1]"], ["APU Power Fault", "APU[2]"], ["APU Generator Fail", "APU[3]"], ["APU High Oil Temperature", "APU[4]"], ["APU Hot Start", "APU[5]"], ["APU Loss Overspeed Protection", "APU[6]"], ["APU Starter Engaged", "APU[7]"], ["APU Fire", "APU[8]"], ["APU Fails Bite Check", "APU[9]"], ["APU Door Fails to Open", "APU[10]"], ["APU No Flame", "APU[11]"], ["Left Fire Bottle Discharge", "APU[12]"]], 

    avionics: [["ADS 1 Fail", "AVIONICS[1]"], ["ADS 2 Fail", "AVIONICS[2]"], ["ADS 3 Fail", "AVIONICS[3]"], ["AP 1 Fail", "AVIONICS[4]"], ["AP 2 Fail", "AVIONICS[5]"], ["Autopilots Fail", "AVIONICS[6]"], ["Baroset 1 Fail", "AVIONICS[7]"], ["Baroset 2 Fail", "AVIONICS[8]"], ["Baroset 3 Fail", "AVIONICS[9]"], ["CCD 1 Fail", "AVIONICS[10]"], ["CCD 2 Fail", "AVIONICS[11]"], ["Heading Comparison Monitor", "AVIONICS[12]"], ["Heading and Roll Comparison Monitor", "AVIONICS[13]"], ["Display Controller 1 Fail", "AVIONICS[14]"], ["Display Controller 2 Fail", "AVIONICS[15]"], ["IRS 1 Fail", "AVIONICS[16]"], ["IRS 2 Fail", "AVIONICS[17]"], ["IRS 3 Fail", "AVIONICS[18]"], ["Glideslope Antenna Fail", "AVIONICS[19]"], ["MAU 1A Fail", "AVIONICS[20]"], ["MAU 1B Fail", "AVIONICS[21]"], ["MAU 2A Fail", "AVIONICS[22]"], ["MAU 2B Fail", "AVIONICS[23]"], ["MAU 3A Fail", "AVIONICS[24]"], ["MAU 3B Fail", "AVIONICS[25]"], ["MRC 1 Fail", "AVIONICS[26]"], ["MRC 2 Fail", "AVIONICS[27]"], ["GPS Degrade", "AVIONICS[28]"], ["GPS #1 Fail", "AVIONICS[28]"], ["GPS #2 Fail", "AVIONICS[30]"], ["Display Unit 1 Fail", "AVIONICS[31]"], ["Display Unit 2 Fail", "AVIONICS[32]"], ["Display Unit 3 Fail", "AVIONICS[33]"], ["Display Unit 4 Fail", "AVIONICS[34]"], ["GPS - Unable RNP", "AVIONICS[35]"]] 
} 
var description, breaker; 
for(var key in Alerts){ 
    var system = key.toUpperCase(); 
    $("#systems").append("<div class='systems' id='" +key +"'><div class='select_box'></div><h2>" +system +"</h2></div>"); 
} 
$("#systems").on("click", ".systems", function(){ 
    $("#malfunctions").children().remove(); 
    $(this).find(".select_box").each(function(){ 
     $(".selected").removeClass("selected"); 
     $(this).addClass("selected"); 
    }) 
    $.each(Alerts[this.id], function(ind,item){ 
     description = item[0]; 
     breaker = item[1]; 
     $("#malfunctions").append("<div class='systems' data-key='" +key +"' data-breaker='" +breaker +"' data-id='" +description +"'><div class='select_box'></div><p>" +description +"</p></div>"); 
    }) 
}) 
$("#malfunctions").on("click", ".systems", function(){ 
    var key = $(this).data("key"); 
    var breaker = $(this).data("breaker"); 
    var id = $(this).data("id"); 
    $(this).find(".select_box").each(function(){ 
     if($(this).hasClass("selected")){ 
      $(this).removeClass("selected"); 
     } 
     else{ 
      $(this).addClass("selected"); 
      $.post("../php/processing.php", {system: key, description: description, breaker: breaker}, function(response){ 
       if(response.success == "1"){ 
       } 
      }) 
      console.log(key); 
      console.log(id); 
      console.log(breaker); 
     } 
    }) 
}) 

PHP 헤더

// 헤더 파일에서

처리 파일

ob_start(); 
    require("../includes/header.php"); 
    if($_POST["save"]){ 
     header("Location: ../pages/instructor.php"); 
     $instructor = $_POST["name"]; 
     $initials = $_POST["initials"]; 
     $date = $_POST["date"]; 
     $center = $_POST["center_menu"]; 
     $pair1 = $_POST["pair1"]; 
     $pair2 = $_POST["pair2"]; 
     $scenario = $pair1 .$pair2; 
     $id = $scenario .substr(strtoupper($center, 0,4)) .$date .$initials; 
     $system = $_REQUEST["system"]; 
     $description = $_REQUEST["description"]; 
     $breaker = $_REQUEST["breaker"]; 
     ob_clean(); 

     $insert_malfunctions = "INSERT INTO `$malfunctions`(`scenario_id`, `system`, `description`, `breaker`) VALUES('" .$id ."', '" .$system ."', '" .$description ."', '" .$breaker ."')"; 
     mysqli_query($connect, $insert_malfunctions); 
     echo json_encode(array("success" => 1)); 
    } 

에서

// 나는 다른 테이블에 데이터를 추가 처리 스크립트에 두 개의 추가 질문이 있지만, 나는 그들이 문제를 만드는 것입니다 생각하지 않습니다. 또한 제출 버튼의 게시 값에 대한 PHP 검사에서 문제가 발생합니까? 이제 작동하므로 데이터베이스에 추가되는 유일한 필드는 scenario_id 필드입니다.

다음은 내가받는 네트워크 응답입니다. enter image description here

+0

왜 내 HTML이 필요한지 잘 모르겠지만 질문과 관련이 없지만 추가하겠습니다. –

+0

그 필드는 테이블에 올바르게 추가됩니까? –

+1

브라우저 콘솔 네트워크 탭에서 실제 요청을 검사하여 실제로 전송 된 내용을 확인하십시오. – charlietfl

답변

0

헤더가 삽입 전에 페이지를 리디렉션하므로 포스트 데이터가 손실되므로 삽입 후에 헤더를 끝에 삽입하십시오.

header("Location: ../pages/instructor.php"); 

또한 변경하십시오.

$insert_malfunctions = "INSERT INTO " . $malfunctions . "(scenario_id, system, description, breaker) VALUES('" .$id ."', '" .$system ."', '" .$description ."', '" .$breaker ."')"; 
관련 문제