【问题标题】:Cross checking with database before rendering page在渲染页面之前与数据库进行交叉检查
【发布时间】:2013-07-26 02:41:58
【问题描述】:

在让这些数据更进一步之前,我正在尝试将一些值与我在数据库中的数据进行交叉检查。

我有一个表格,我在这个表格中发帖

pid, Name, size, category and qty.

我已经验证了qty

在我发布的这些数据中,我使用这些数据在database 中查找价格。我没有发布价格

因为我正在使用这些发布数据来查找某人可能想要与他们混淆的价格,例如将类别或尺寸值更改为任何值。如果他们这样做,它仍然会被发布并且页面将呈现并且看起来像

Name:     qty:      unit price:         total item price:
size:

虽然这些表名显示NOTHING 正在显示,这意味着页面只是在渲染。 我知道你们中的一些人可能会想“如果这个人对这些价值观有什么不满,那是他们的错”,我完全同意,但我仍然想阻止页面呈现

如果发布的所有内容都与具有该产品 ID (Pid) 的任何项目无关。

如何使用 ajax 在其他页面呈现之前对其进行验证?

我已经有一个看起来像的 ajax

$(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;
        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: 'cart.php',
            type: 'POST',
            data: { pid:pid, 
            size:size, 
            Qty:Qty, 
            Category:Category },
            success: function(data)
            {

            }
        });
    });
});

cart.php

是我将这些值发布到的位置。

请问我该怎么做?

【问题讨论】:

  • 如何使用 ajax 来验证这些东西?它与没有它的情况相同,但仅通过 XmlHttpRequest 对象 - 唯一的区别将如何“交换”。仅此而已(提示)。作为表单形式:如果不行就显示错误信息,否则你想显示一个成功的模态对话框,对吧?
  • 1) 你不处理 success: function(data) 中的 data 参数 2) !/^[1-9]\d?$/.test(Qty)
  • @DaveJust 我也在使用 php 进行服务器端验证...我知道 JavaScript 可以关闭,但还是感谢您提出来
  • 您是否在使用路由器的应用程序中实现Model-View-ControllerModel-View-Presenter?我这么说是因为在这种情况下,您可以简单地添加 ajaxAction() 方法来验证表单,然后按照上面的描述发送响应。

标签: php jquery ajax validation pdo


【解决方案1】:

您想询问服务器查看数据是否有效。除了表单数据之外,我还会发布一个标志告诉 PHP 这是 AJAX 验证,因此它可以告诉 AJAX 发布与正常的表单提交。

在PHP中,数据有效性确定后,只能返回true或false。然后你的 Javascript 可以确定从那时起要做什么。

但是,我认为还有其他方法可以解决这个问题。也许您不应该让用户修改这些字段,或者您可以发布表单,如果用户提交了无效数据,则重新呈现表单。另一种选择是限制用户可以做的选择,所以他们的输入总是有效的。

【讨论】:

  • 表单中的所有内容都是一个选择选项,用户可以输入的唯一输入是Quantity,我对其进行了javascript验证,确保输入了唯一的a whole number
  • 如果您右键单击 chrome 并选择 inspect element,您可以在其中进行修改。例如,更改表单value,他们无法阻止某人这样做,除非您禁用网站上的右键单击,这对用户不友好,也不是非常推荐。
  • @SarahJames 如果您的用户走得那么远,那么他们也可以修改您的 JavaScript。您应该始终在服务器端验证所有用户输入,但我认为让想要破坏事物的用户破坏它们是可以的。如果他们愿意,他们甚至可以构建自己的浏览器。
  • 我知道 quantity 不应该是字母或有 . 。在我的数据库中,大小存储为(例如)12 英寸,在值中它显示为12 inch,因为我正在呼应它......如果我使用这个 jqery 验证` if (!/^[1-9 ]\d?$/.test(size)){ alert('请选择一个选项');返回假; } `它不起作用。我该如何验证呢
  • @SarahJames 我以为你想在服务器上验证这一点。将文本发送到服务器并对数据库进行检查。您应该对用户在开发人员工具中修改的输入进行客户端验证。任何用户在搞砸之后期望您的应用程序正常工作是荒谬的。因此,您应该对选择选项进行服务器端验证,而不是客户端验证。
猜你喜欢
  • 1970-01-01
  • 2020-12-12
  • 2016-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-19
  • 2018-07-26
相关资源
最近更新 更多