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
필드입니다.
다음은 내가받는 네트워크 응답입니다.
왜 내 HTML이 필요한지 잘 모르겠지만 질문과 관련이 없지만 추가하겠습니다. –
그 필드는 테이블에 올바르게 추가됩니까? –
브라우저 콘솔 네트워크 탭에서 실제 요청을 검사하여 실제로 전송 된 내용을 확인하십시오. – charlietfl