1

我比 Web 编程新手略胜一筹,我对表单验证知之甚少。在我的研究中,似乎有多种方法可以验证表单数据,其中一些方法取决于您将如何处理数据。然后你必须弃用诸如mysql_real_escape_string“PDO”之类的功能,整个事情非常复杂。

那么,有一组基本上是验证表单数据的标准方法的函数是否合理/可行?像这样...

function validate_for_sql()
function validate_for_email()
function validate_for_browser()

也许应该有更多(整数的东西?)。理想的情况是 sql 注入和其他讨厌的事情都可以通过一组由编码社区开发并为编码社区开发的普遍接受且坚如磐石的功能来处理。

这是可行的吗?它是否已经存在于某个地方……也许在一个隐藏的巢穴中?如果是这样,有人可以通过电子邮件将访问此信息所需的秘密密码发送给我吗?:)

4

3 回答 3

1

让我总结一下您的问题:“有一组功能,普遍接受,统一和可靠,基本上是验证表单数据的标准方法,这是否合理/可行?”

如果我总结的是真的,那么答案是:jQuery Validation。顾名思义,您需要 jQuery 和 jQuery Validation 才能完成这项工作。

以下是有关如何使用此工具的示例。

HTML:

<form id="myForm">
    <input type="text" name="currency">
    <input type="text" name="amount">
</form>

Javascript:

$("#myForm").validate({
    rules: {
        "currency": {
            minlength: 3,
            required: true
        },
        "amount": {
            number: true
        }
    }
});

默认情况下,在 KeyUp 上触发验证。因此,当用户更改字段货币并违反上述规则之一时,jQuery Validation 将自动提供预构建通知消息。

这些是上述规则的预构建消息:

  1. minlength:请输入至少三个字符
  2. 必填:此字段为必填项
  3. 号码:请输入一个有效的号码

如果您想验证我们的汇率表中是否存在某种货币怎么办?

答案是:只需添加自定义验证方法。

$.validator.addMethod("checkCurrency", 
    function(value, element) {
        var result = false;
        $.ajax({
            type:"GET",
            async: false,
            url: "012_ajax.php", // script to validate in server side
            data: {currency: value},
            success: function(data) {
                result = (data == "1") ? true : false;
            }
        });
        // return true if currency is exist in database
        return result; 
    }, 
    "Currency is not exist."
);

$("#myForm").validate({
    rules: {
        "currency": {
            minlength: 3,
            required: true,
            checkCurrency: true
        },
        "amount": {
            number: true
        }
    }
});

使用此代码,每次用户在表格中输入不存在的货币时,表单将始终显示“货币不存在”消息。


最后一个问题:我可以为这个插件创建自定义消息吗?

答案是肯定的。

$("#myForm").validate({
    rules: {
        "currency": {
            minlength: 3,
            required: true,
            checkCurrency: true
        },
        "amount": {
            number: true
        }
    },
    messages: {
        "currency": {
            minlength: "Currency should at least 3 char or more",
            required: "Currency is required"
        },
        "amount": {
            number: "Amount must be number"
        }
    }
});

现在,每次用户违反上述规则时,表单都会以上述代码中的状态给出消息。

这个插件的重要之处,就像每个表单验证都应该做的那样,只要数据没有被验证,就不会提交数据。好吧,只要用户没有从他的浏览器中关闭/禁用 javascript。:)


更新

上面的答案是用于客户端验证。

对于服务器端验证,互联网上有 PHP 表单验证脚本,其中有:

  1. http://html-form-guide.com
  2. 苏亚雷斯

他们有内置的验证规则,用户可以添加自定义规则。

希望这会有所帮助。

于 2013-07-21T03:45:07.020 回答
0

你从根本上误解了这一点。

转义字符串的目的是允许您将其插入结构化字符串中而不会破坏结构(例如,SQL 注入、XSS 等)。

每当您将字符串插入某个结构时,您都需要为该结构转义它,以便生成的字符串有意义。

如果您将它转义为不同的结构(例如,HTML 转义字符串并将其放入 SQL 语句中),您将引入安全漏洞和错误。

于 2013-06-30T15:59:19.033 回答
0

如果我理解你的问题,那么是的,这可以通过将类似类型输入的值作为参数传递给函数来实现。我敢肯定,如果你在网上搜索,你会发现一些预制的功能可以做到这一点。但是,制作它们并不需要那么长时间,而且创建它们将提高您的技能。有这样的东西会很好,事实上,ASP.NET 实际上确实有内置验证,但恐怕 PHP 没有(据我所知)。

于 2013-06-30T15:47:54.993 回答