如何通过AJAX和PHP发布这些变量?

时间:2011-11-11 02:00:09

标签: php ajax

我有一个页面,我使用AJAX将一些数据保存在数据库中。如下所示,当我点击按钮时,它会将数据发布到add-to-db.php

我的问题是我在测试中使用了数字而不是值并且工作了。现在我必须使用变量它不会。
我想我必须发布$dealid$myid的值,但我该怎么做呢?

谢谢。

在我的 product.php 我有这个

<script>
$(function(){
    $("#JqPostForm").submit(function(e){
       e.preventDefault();   

        $.post("add-to-db.php",
        function(data){

            $("#message_post").html("Thank you");


        });
    });

});
</script>

$dealid = (int)$_GET["id"];
$myid = $_SESSION['SESS_MEMBER_ID'];

并且在 add-to-db.php 中我有这个查询,但它没有保存在DB中

$query = "INSERT INTO reverse_relations (user_id, product_id, ip) VALUES ('$_SESSION['SESS_MEMBER_ID']', '$dealid', '$_SERVER[REMOTE_ADDR]')";

然而,当我添加VALUES ('1', '2', '$_SERVER[REMOTE_ADDR]')";时,它有效

1 个答案:

答案 0 :(得分:2)

首先,需要将product.php上的表单中的变量发送到add-to-db.php。现在,没有变量被发送,因为$ .post()调用中没有指定任何变量。为此,您可以:

$.post("add-to-db.php", $("#myform").serialize(), function (data){
   $("#message_post").html("Thank you");
});

一旦将变量发送到add-to-db.php,您可以通过访问$ _POST数组来读取它们,假设您在php.ini中有register_globals OFF,并且您的字段被称为dealid < / p>

$query = "INSERT INTO reverse_relations (user_id, product_id, ip) VALUES ('$_SESSION['SESS_MEMBER_ID']', '".$_POST['dealid']."', '$_SERVER[REMOTE_ADDR]')";

然而 - 不使用此代码。您必须对所有POST进行处理,并且应该在查询中清理SESSION和SERVER变量,否则可能会危及您网站的安全。

$dealid = mysql_real_escape_string($_POST['dealid']);
$sessid = mysql_real_escape_string($_SESSION['SESS_MEMBER_ID']);

然后在SQL查询中使用这些变量:

$query = "INSERT INTO reverse_relations (user_id, product_id, ip) VALUES ('{$sessid}', '{$dealid}', '$_SERVER[REMOTE_ADDR]')";