-->ColdFusion 初级教程-->数据输入检查

ColdFusion

后页 前页
目录
北极星书库
数据输入检查


当你使用表单接收用户输入以执行数据库查询时,你通常希望在执行查询之前能对用户的输入进行检查。尤其是SQL语句需要特定的数据类型时,这种检查更加必要。


你可以对提交给ColdFusion Server的任何表单数据进行检查。ColdFusion提供了几种不同的数据输入检查类型。


数据输入检查类型

检查类型

描述

客户端

CFFORM中,你可以通过ONVALIDATE属性指定一个JavaSript函数,用该函数完成输入检查。CFINPUTCFGRIDCFSLIDERCFTEXTINPUT,和CFTREE等标签都具有ONVALIDATE属性。

服务器端

CFFORM中,你可以在支持输入检查的标签(如CFINPUTCFTEXTINPUT)中使用VALIDATE属性,允许输入检查。

你也可以在HTML表单中使用隐含字段,这可以对几种通用数据类型进行输入检查。


必须输入的Form字段


HTML表单的缺点之一是它不能将字段定义为必须输入的字段。而对数据库应用程序来说,这是个很重要的要求,因此ColdFusion提供了一种服务器端的机制,强制用户必须在字段中输入数据。


要将一个字段定义为必须输入的字段,可以用一个隐含字段,其名字由后缀“_required”和要求必须输入数据的字段名组合而成。例如,要强制用户在字段”FirstName”中输入数据,可以使用如下语法;


<INPUT TYPE="hidden" NAME="FirstName_required">


如果用户没有在FirstName字段中输入数据,ColdFusion将不接受表单提交,而是返回一个错误信息,通知用户该字段必须输入数据。你可以用隐含字段的VALUE属性提供定制的错误信息。例如你想显示错误信息“You must enter your first name.”,可以使用如下语句:


<INPUT TYPE="hidden"


NAME="FirstName_required"


VALUE="You must enter your first name.">


隐含Form字段


HTML表单的另一个缺点是你不能对用户输入的数据进行检查。而ColdFusion可以利用表单中的隐含字段,对数据输入进行几种类型的检查。你可以用来进行输入检查的隐含字段后缀有如下几种:


使用隐含字段进行表单输入检查

字段名后缀

VALUE属性

描述

_integer

定制的错误信息

检查用户是否输入了数字,如果用户输入的是浮点数,则转换为整数。

_float

定制的错误信息

检查用户输入的是否是数字,不进行浮点数到整数的转换。

_range

MIN=最小值

MAX=最大值

检查输入的数字是否在指定的范围内,你可以指定上界和下界或其中之一。

_date

定制的错误信息

检查用户输入的是否是日期值,并将日期值转换为ODBC日期格式。它可以接受最常用的日期格式,如9/1/98,Sept.9,1998

_time

定制的错误信息

检查时间值的正确输入,并将时间值转换为ODBC时间格式。

_eurodate

定制的错误信息

检查用户输入的是否是标准欧洲格式的日期值,并将 其转换为ODBC格式。


例子:隐含字段


下面的例子演示了如何用隐含字段进行数据输入检查。在这个例子中,被检查的表单包含字段”Rooms”,”Guests”,”ArrivalDate”。为了保证Rooms字段输入一个整数,Guests字段的值在112之间,ArrivalDate字段输入一个合法的日期值,可以在表单中加入下列的隐含字段:


<INPUT TYPE="hidden"


NAME="Rooms_integer"


VALUE="You must enter a number for the Rooms field.">


<INPUT TYPE="hidden"


NAME="Guests_range"


VALUE="MIN=1 MAX=12">


<INPUT TYPE="hidden"


NAME="ArrivalDate_date"


VALUE="This is not a valid arrival date.">


VALUE属性是可选内容,如果你不指定该属性,则显示缺省的错误信息。


当表单被提交时,ColdFusion扫描所有的字段,寻找你所指定的检查规则,然后对用户的输入进行分析。如果输入的数据违反了任何规则,ColdFusion会显示给用户一个错误信息,用户必须返回前一个屏幕,修改输入的数据,然后重新提交表单。只有通过数据输入检查的表单提交才能被ColdFusion所接受。


数值型和日期型字段的自动检查


如果你使用CFINSERTCFUPDATE,并且要操纵的数据库字段是数值型,日期型,或时间型,那么向这些数据库字段插入数据的Form字段会自动被检查。


两点补充:


·对一个字段设置检查规则并不能使该字段成为必须输入的字段。如果要求用户必须输入该字段,仍需要使用带有”_required”的隐含字段。


·数值数据通常包含逗号字符和美元符,对于使用了_integer,_float,_range检查规则的字段,在检查输入数据和存入数据库之前,这些字符会被自动删除。


后页
前页
目录
北极星书库