2014-09-17 2 views
-1

현재 빈 데이터베이스 행이 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); 
+2

당신의 SQL에 원료 사용자 입력을 사용하지 마십시오 : 당신은 또한 당신이 키/값을 전송하는 서버에게 httpSend.open 후 코드 줄을 추가해야합니다. 그것은 [SQL 주입 공격에 개방적이다] (http://bobby-tables.com) – Machavity

+0

당신의 HTML은 어떻게 생겼는가? '정의되지 않은 색인'은 때로는 HTML 양식 요소 이름의 불일치를 나타냅니다. – esqew

+0

여기에는 상대적인 html이 없습니다. 이 자바 스크립트는 onclick 버튼으로 사용자가 활성화하는 함수가 될 것이고, 데이터베이스에 추가하는 것은 사용자에게 매끄럽게 이루어질 것입니다. – moss

답변

1

, 당신의 코드에 문제가 JSON.stringify가입니다.

Name=name&Address=address 

아닌 JSON 개체 : 포스트 매개 변수는 키 - 값 귀하의 PARAMS는 다음과 같아야합니다 의미 단지 GET 요청과 같은 형식을 사용합니다.

httpSend.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
+0

당신이 말한 것을 성취했지만 PHP가 올바르지 않습니까? 나는 내 값을 정확하게받지 못한다. – moss

+0

@ 모스 정교하게 만들어 줄 수 있니? – Overv

+0

필자는 위 코드를 업데이트하여 사용자 코드가 Name = name & Address = address를 전송하도록합니다. 그러나 내 PHP는 여전히 다시 정의되지 않은 인덱스를 제공합니다 .. 나는 데이터를 추출하는 방법을 잘 모르겠습니다. – moss

관련 문제