在渲染之前使用ajax和mysql进行验证

时间:2013-07-25 14:41:27

标签: php jquery mysql ajax pdo

我对ajax很新,但我可能会问你们有些人可能很简单。

我正在寻找一种最好的方法来检查用户发布到我的checkdata.php的内容是否真的是数据库中的price

我有一个非常长的数据库,可以查找,但我需要进行此验证。

产品

pid      name                  size     price  
1        chocolate              12        30.00

我有一个表单,我的格式是pid namesize

在我的PDO声明中,我正在做这个

SELECT pid, price, name, size from Product WHERE pid=:pid AND size=:size AND name=:name

这很好用。

但是我想使用ajax来检查用户与数据库中的用户是什么相同,并且它等于数据库中相同的价格。

如果一切都不一样,那么它应该有一条警告信息“不要乱码。”

我有一张很长的桌子。对不起,我不能把代码显示得太长

表中的

我的名字是我从数据库中回显的

size是一个下拉列表

pid是一个隐藏的输入。

我目前有这个jquery

$(document).ready(function(){
    $('#selected').hide();
    $('#button').click(function(){
        var pid = $('#pid').val();
        var size = $('#size').val();
        var Qty = $('#Qty').val();
        var price = '\u00A3' + parseInt($('#pricetag').text().replace(/^\D/, ''), 10) * Qty;
        var size = $('#size').val();
        if (!/^[1-9]\d?$/.test(Qty)){
            alert('Quantity should not be below 1 or null');
            return false; // don't continue
        } 
        else {
        $('#sprice').text(price);
        $('#ssize').text(size);
        $('#selected').slideDown();
        }
        $.ajax({
            url: 'checkdata.php',
            type: 'POST',
            data: { pid:pid, size:size, Qty:Qty},
            success: function(data)
            {

            }
        });
    });
});

<?php
session_start()

if(isset($_POST['pid']) && isset($_POST['size']) && isset($_POST['Qty']) && isset($_POST['name'])){   
    $pid = $_POST['pid'];
    $size = $_POST["size"];
    $qty = $_POST['Qty'];
    $name= $_POST['name'];

.
.
.

 somewhere in the php tag I have a statement to get the right price based on what data is getting posted
   SELECT pid, price, name, size from Product WHERE pid=:pid AND size=:size AND name=:name

?>

摘要 在渲染页面之前,如何使用ajax检查发布的内容与数据库中的相同。

2 个答案:

答案 0 :(得分:1)

不管怎样,你不应该通过客户往返价格。提高价格并将其显示给用户是一回事,但您应该从不接受来自用户的价格值。在实际计算成本时,始终从数据库中获取新的副本。

如果您想“修理”价格,以便如果商品长时间位于购物车中,并且您正在更改数据库中的价格,那么请将价格保留在用户的会话中。这是一个纯粹的服务器端数据结构,不能直接插入。

这会让你说“物品价格自你添加到购物车后已经改变了。接受新的更新价格或从购物车中移除?”。

答案 1 :(得分:0)

我不确定你在问什么。

假设您正在寻找验证用户折扣优惠券等,您可能需要在checkdata.php中检查用户会话。如

$member_coupon=$_SESSION['MEMBER_COUPON'];

SELECT pid, name, size from Product where pid=:pid and coupon_id=$member_coupon

然后

if(result){echo 'SUCCESS';}
else{ echo 'dont mess around';} 

和ajax可以使用

success: function(results) { 
alert(results);
}