【问题标题】:Creating a generic server-side validation function in Coldfusion在 Coldfusion 中创建通用的服务器端验证函数
【发布时间】:2011-07-12 05:45:09
【问题描述】:

所以,我一直在尝试清理我的代码并学习我应该一直做的事情……当然,服务器端验证是我应该一直做的事情之一。但是,当我拥有这个巨大的表格时会发生什么?我真的很想有一个通用函数,允许我传递数据类型和字段名称。在 Coldfusion 中是否有安全的方法来执行此操作?

我一直在考虑这样做一段时间,但我走到了死胡同,在网络上找不到任何关于这样做的信息。似乎 Coldfusion 不提供此功能。

但是,我认为如果有一种方法可以在输入标签中指定具有字段数据类型的属性,那将会很酷。然后,如果 Coldfusion 将它与您的字段名称一起放入一个结构中,那就太好了。

有没有办法做到这一点,或者有人可以详细说明进行服务器端验证的最有效方法吗?

【问题讨论】:

  • 看看ValidateThis - 非常酷,非常强大,非常易于使用的验证库。 validatethis.org

标签: forms coldfusion validation


【解决方案1】:

如果CF有这样的东西那就太好了!好消息,它确实如此,多年来! :)

您正在寻找的是cfinput(和cfform)标签。此标签包括您想要的标签中的验证细节(伟大的思想都一样,对吧?)。您可以指定验证、错误消息,是否应该验证客户端或服务器端 - 各种巧妙的技巧。

检查这里的实现 - 它很容易使用:

http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=Tags_i_07.html

请注意,很多代码天后讨厌 cfform / cfinput。实际上,正确实施时它们没有任何问题。它可能会被滥用,并且不适用于所有解决方案,但工具箱中的所有内容都是如此。总的来说,对于大多数表单输入和验证情况,它都非常有效。

如果您讨厌这个想法,另一种方法是使用 cfparam 的内置类型属性并捕获您的错误。

例如,在表单处理页面的顶部,您可以:

<cfparam name="form.cardNumber" type="creditcard">

当达到这一点时,如果该变量中的值不是该类型,它将抛出一个您可以捕获的异常。这使您不必编写 if() 和模式匹配。此外,如果没有内置类型,您可以指定正则表达式进行模式匹配。

以下是更多信息和支持的类型: http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=Tags_p-q_01.html

让我知道你的想法!

【讨论】:

  • 我知道 cfform 和 cfinput,但是我读到最好同时进行客户端和服务器端验证。 cfinput 是客户端,如果你禁用 javascript...那么你没有验证。我实际上已经有了这些标签。我只是想用服务器端来保护我的表单! :) 但是,我不知道 cfparam 有一个类型。这很有趣,正是我想要的! (我不想输入 if 模式匹配。)
  • 请记住,您也可以进行 cfinput 服务器端验证,而不是客户端验证! :) validateAt="onServer" - 完成!
  • ColdFusion 有一些非常好的内置验证,Nate 已经说过。我个人喜欢验证这个@@validatethis.org。它与 CF9 中的 ORM 配合得很好,有一些很酷的客户端和服务器端验证。最好的事情是您的配置来自一个位置。也很容易使用:)
【解决方案2】:

我鼓励您考虑使用像 CFWheels(或 ColdBox)这样的 ColdFusion 框架,该框架已经内置了很多此类功能,可以使开发变得更容易。使用 CFWheels 是我作为开发人员做出的最佳决定之一,我的开发技能在过去一年中显着提高。有一些很棒的在线截屏视频可以帮助您入门。 http://cfwheels.org/screencasts

【讨论】:

    猜你喜欢
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多