目录
北极星书库
当你使用表单接收用户输入以执行数据库查询时,你通常希望在执行查询之前能对用户的输入进行检查。尤其是SQL语句需要特定的数据类型时,这种检查更加必要。
你可以对提交给ColdFusion Server的任何表单数据进行检查。ColdFusion提供了几种不同的数据输入检查类型。
数据输入检查类型 |
|
检查类型 |
描述 |
客户端 |
在CFFORM中,你可以通过ONVALIDATE属性指定一个JavaSript函数,用该函数完成输入检查。CFINPUT,CFGRID,CFSLIDER,CFTEXTINPUT,和CFTREE等标签都具有ONVALIDATE属性。 |
服务器端 |
在CFFORM中,你可以在支持输入检查的标签(如CFINPUT,CFTEXTINPUT)中使用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字段的值在1到12之间,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所接受。
数值型和日期型字段的自动检查
如果你使用CFINSERT或CFUPDATE,并且要操纵的数据库字段是数值型,日期型,或时间型,那么向这些数据库字段插入数据的Form字段会自动被检查。
两点补充:
·对一个字段设置检查规则并不能使该字段成为必须输入的字段。如果要求用户必须输入该字段,仍需要使用带有”_required”的隐含字段。
·数值数据通常包含逗号字符和美元符,对于使用了_integer,_float,或_range检查规则的字段,在检查输入数据和存入数据库之前,这些字符会被自动删除。
前页
目录
北极星书库