현재 빈 데이터베이스 행이 mySQL 데이터베이스에 입력되고 있습니다. 정의되지 않은 인덱스는 PHP에서 이름과 주소를 가져 오는 것입니다. 함수의 일부로 javaScript 코드를 사용하고 있습니다. 사용자는이 기능을 활성화 할 것이고, 데이터베이스에 추가하는 것은 뒤에서 겉으로 드러나지 않을 것입니다.JSON과 AJAX를 사용하여 mySQL 데이터베이스에 값을 추가하는 방법은 무엇입니까?
mySQL을 입력하는 값을 어떻게 얻을 수 있습니까?
PHP 코드,
<?php
$connection = mysqli_connect("localhost", "user", "pass", "db");
$name = $_POST['Name'];
$address = $_POST['Address'];
mysqli_query($connection,"INSERT INTO offerSelected (Id, Url) VALUES ('".$name."','".$address."')");
?>
자바 스크립트
var name = "John";
var address = "UK";
var sendInfo = {
Name: name,
Address: address
};
var params = JSON.stringify(sendInfo);
alert(params);
var httpSend = new XMLHttpRequest();
var php = "http://server/~name/folder/insertOffer.php";
httpSend.open("POST", php, true);
httpSend.onreadystatechange = function()
{
if(httpSend.readyState == 4 && httpSend.status == 200) {
alert("sent");
}
}
httpSend.send(params);
외에도 코멘트에 언급 된 SQL 주입 문제 사람들
var params = 'Name=' + name + '&Address=' + address;
alert(params);
var httpSend = new XMLHttpRequest();
var php = "http://server/~name/folder/insertOffer.php";
httpSend.open("POST", php, true);
httpSend.onreadystatechange = function()
{
if(httpSend.readyState == 4 && httpSend.status == 200) {
alert("h");
}
}
httpSend.send(params);
당신의 SQL에 원료 사용자 입력을 사용하지 마십시오 : 당신은 또한 당신이 키/값을 전송하는 서버에게
httpSend.open
후 코드 줄을 추가해야합니다. 그것은 [SQL 주입 공격에 개방적이다] (http://bobby-tables.com) – Machavity당신의 HTML은 어떻게 생겼는가? '정의되지 않은 색인'은 때로는 HTML 양식 요소 이름의 불일치를 나타냅니다. – esqew
여기에는 상대적인 html이 없습니다. 이 자바 스크립트는 onclick 버튼으로 사용자가 활성화하는 함수가 될 것이고, 데이터베이스에 추가하는 것은 사용자에게 매끄럽게 이루어질 것입니다. – moss