3

以下代码段应该收集数据并将其发送到 php 文件。它确实在单击按钮时输出正确的值。

var dataString = 'username='+SessionVars.my_username+'&lessonid='+SessionVars.my_lesson_number;
$('#tracking_submit').click(function(){
$.ajax({
    url: "php/tracking.php",
    type:'POST',
    data: dataString,
    success: function(){
    $('#tracking_message').replaceWith(SessionVars.my_username+"Thank you for updating."+SessionVars.my_lesson_number);
    }                   
    });
return false;   
});

然后我正在使用的 php 文件部分是这样的:

session_start(); 
mysql_connect("stuff i tested and it works");
mysql_select_db("same");

$username=$_POST['username'];
$lessonid=$_POST['lessonid'];

mysql_query("INSERT INTO tracking ( username, lessonid ) VALUES ( ".$username.", ".$lessonid." );");

当我检查数据库时,里面什么都没有。

4

4 回答 4

2
mysql_query("INSERT INTO tracking ( username, lessonid ) VALUES ('".$username."', ".$lessonid." );");

您错过了该行中的引号。另外,请阅读SQL 注入

于 2012-09-09T16:22:30.557 回答
1

这是行不通的,因为您没有将查询中的值放入引号中。这也应该有助于并防止您被黑客入侵:

mysql_query("INSERT INTO tracking ( username, lessonid ) VALUES ( '".mysql_real_escape_string($username)."', '".mysql_real_escape_string($lessonid)."' )");
于 2012-09-09T16:22:44.783 回答
1

改成..

$.ajax({
    url: "php/tracking.php",
    type:'POST',
    cache: false,
    dataType: "json",
    data: {username: SessionVars.my_username, lessonid: SessionVars.my_lesson_number}, 
    success: function(){
    $('#tracking_message').replaceWith(SessionVars.my_username+"Thank you for updating."+SessionVars.my_lesson_number);
    }                   
    });
return false;   
});

在下一页上执行 print_r ($_POST)。同样是的,您应该阅读一些 sql 注入预防。

于 2012-09-09T16:26:37.060 回答
0

问题出在 php 文件中,在上面那个人的帮助下,该文件通过以下方式解决:

$username=mysql_real_escape_string($_POST['username']);
$lessonid=mysql_real_escape_string($_POST['lessonid']);

mysql_query("INSERT INTO wtf ( username, lessonid ) VALUES ( '".$username."', '".$lessonid."' );");
于 2012-09-09T16:37:15.517 回答