所以,我一直在努力清理我的代码并学习我应该经常做的事情......当然,服务器端验证是我应该经常做的事情之一。但是,当我拥有这种巨大的形式时会发生什么?我真的想要一个允许我传递数据类型和字段名称的通用函数。在Coldfusion中有一种安全的方法吗?
我一直在考虑这样做一段时间,但我已经走到了死胡同,无法找到任何关于在网上做这样的事情的信息。似乎Coldfusion没有提供这种能力。
但是,如果有一种方法可以在输入标记中指定具有该字段数据类型的属性,那么我认为会很酷。然后,如果Coldfusion用你的字段名称将它粘贴到一个结构中,那将是非常好的。
无论如何都可以实现这一目标,还是有人可以详细说明最有效的服务器端验证方法?
答案 0 :(得分:2)
如果CF有类似的东西,那就太棒了!好消息,它确实存在多年了! :)
您要找的是cfinput
(和cfform
)标记。这个标签包含标签中的验证细节,就像你想要的那样(伟大的思想一样,对吧?)。您可以指定验证,错误消息,是否应验证客户端或服务器端 - 各种巧妙的技巧。
点击此处查看实施情况 - 它非常易于使用:
http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=Tags_i_07.html
警告说很多代码diva都讨厌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
让我知道你的想法!
答案 1 :(得分:1)
我建议你看看可能使用像CFWheels(或ColdBox)这样的ColdFusion框架,它已经内置了很多这种类型的功能,使开发变得更容易。使用CFWheels是我作为开发人员做出的最佳决策之一,我的开发技能在过去一年中有了显着增长。在线开始有一些很棒的截屏视频。 http://cfwheels.org/screencasts