如何使用jquery安全地POST php变量?

时间:2015-09-06 17:21:45

标签: php jquery html ajax

我有一个产品页面,我正在尝试实施评级系统。

每个产品页面都有以下信息:

productID - 产品的ID

用户 - 登录用户的用户名

我有星级评分的以下HTML:

<fieldset id='ratingStars' class="rating">
   <input class="stars" type="radio" id="star5" name="rating" value="5" />
   <label class = "full" for="star5" title="Incredibly Powerful - 5 stars"></label>
    ...
   <input class="stars" type="radio" id="star1" name="rating" value="1" />
   <label class = "full" for="star1" title="Unusable - 1 star"></label>
 </fieldset>

我有一个javascript文件,当点击其中一个星星时调用它,它调用一个PHP文件,它将连接到数据库并将评级添加到产品中:

$(document).ready(function () {
    $("#ratingStars .stars").click(function () {
        $.post('../resources/add_rating_to_product.php',{rate:$(this).val()},function(){
        });
    });
});

PHP文件只是连接到数据库并将评级插入评级表。它希望POST用于用户名,产品和评级的数据。

也许这是一个愚蠢的问题,但如何从javascript文件中发布该数据呢?我理解如何获得评级,因为被点击的对象,但如果他们不在PHP文件的范围内,我如何发送其他2。我该如何安全地做到这一点?

我很可能认为这一切都是错的,所以感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

您可以序列化表单并使用onSubmit事件处理程序。没有测试过代码。

考虑以下形式:

<form id="ratingsForm" action="../resources/add_rating_to_product.php" method="POST">
  <input type="radio" name="rating" value="5" />
  <input type="radio" name="rating" value="1" />
  <input type="hidden" name="productId" value="<?php echo $productId; ?>" />
  <input type="submit" name="submit" value="submit" />
</form>

您可以使用事件处理程序序列化表单数据并使用AJAX发布它。

$(document).ready( function() {
  $("#ratingsForm").on("submit", function(){
    $.ajax( {
      type: "POST",
      url: $(this).attr( 'action' ),
      data: $(this).serialize(),
      success: function( response ) {
        console.log( response );
      }
    } );
  });
} );