2013-07-15 5 views
0

Я пытаюсь создать форму, в которой пользователь выбирает вариант, скажем, что он выберет свое имя, я использовал ajax для вызова другой страницы, на этой странице я создаю соединение и вставляю ответ на вопрос, что он вставляет нуль Код index.phpПочему null не содержится в базе данных?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>MyDataBase </title> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"> </script> 

$(document).ready(function(){ 
$("#mysubmit").click(function(){ 
    $.ajax({ 
     url:"Final.php", 
     type:"POST", 
     success: function(success_array) 
     { 
      alert(" Well Done "); 
     }, 
     error: function(xhr, ajaxOptions, thrownError) 
     { 
      alert(" Didn't work ! "); 
     } 
    }); 
}); 
    }); 

</script> 
    </head> 
    <form method="post" id = "myform"> 
    <input type="radio" name="kname" value="X1" />X1<br /> 
    <input type="radio" name="kname" value="Y1" />Y1<br /> 
    <input type="radio" name="kname" value="A1" />A1<br /> 
    <input type="radio" name="kname" value="G1" />G1<br /> 
    <input type="submit" onclick="save()" id="mysubmit"/> 
    </form> 
    <body> 
    </body> 
    </html> 

Final.php

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
     <html xmlns="http://www.w3.org/1999/xhtml"> 
     <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
     <title>Thanks</title> 
     </head> 

     <body> 
     <?php 
     $con = mysqli_connect("localhost","root","xyz","test"); 
     mysqli_query($con,"INSERT INTO name values ('$_POST[kname]')"); 
     ?> 
     </body> 
     </html> 
+3

** предупреждение ** ваш код уязвим для SQL-инъекций! –

+2

@ DanielA.White, это ничто по сравнению с [вопросом, который я только что посетил] (http://stackoverflow.com/q/17664993/). Тем не менее это уязвимо для SQL-инъекции и должно быть исправлено. –

+0

У вас есть уязвимость в SQL-инъекции. Итак, какая отладка вы сделали, чтобы попытаться сузить это? Вы считали, что пытаетесь обрабатывать ошибки MySQL, чтобы понять, что может быть проблемой? –

ответ

0

Вы должны обратиться к kname через $_POST['kname'].

Но, пожалуйста! всегда избегайте своих ценностей!

+0

Что означает «ссылка на клин», извините, что я все еще новичок в этом –

+0

Вы должны использовать кавычки вокруг 'kname', потому что иначе компилятор будет считать' kname' константой. –

0

При отправке/отправке через ajax вам необходимо добавить свои данные. Самый простой - serialize().

var form = $('#myform'); 
$.ajax({ 
    url:"Final.php", 
    type:"POST", 
    data: form.serialize(), 
    ... 

или вы можете получить одно поле -

data: {kname: $('#id_of_your_radio').val()}, 

просто убедитесь, чтобы санировать UserData, прежде чем вставить в вашу БД.

+0

это не сработало, и я не думаю, что это повлияло –

+0

вы проверили firebug (firefox) или консоль разработчика (хром и т. Д.), Чтобы увидеть, что выкладываете для 'kname'? – Sean

+0

uncaught referenceerror save не определен –