Request.Form Collection
Form集合检索了发送给HTTP请求主体的表单元素的值,利用一个表单,使用POST方法发送。
表单输入是包含在头中的。不信任包含在头中的数据很明智,因为恶意用户可以伪造这些信息。举个例子,不要依赖于cookie之类的数据来安全地识别一个用户。
作为一项安全预防措施,始终在使用头部数据和用户输入之前编码它。编码数据的一个通用的方法是使用Server.HTMLEncode。或者,你可以使用短函数,比如说Validating User Input to Avoid Attacks中讲解的那种短函数,来校验头部数据和用户输入。欲进一步了解开发安全Web应用程序的信息,请参阅MS Press - Writing Secure Code的第12章。
句法
Request.Form(element)[(index)|.Count]
参数
- element
- 表单元素的名称,来自你想要检索的值的集合。
- index
- 一个可选的参数,让你能够访问针对一个参数的多个值之一。它可以是任何整型数,范围从1到Request.Form(parameter).Count。
适用于
备注
Form集合是用请求主体中的参数的名称来编索引的。Request.Form(element)是出现在请求主体中的元素的所有值的一个数组。你可以通过调用Request.Form(element).Count来确定参数的值的数目。如果一个参数没有多个值与它关联,count的值就是1。如果没有找到该参数,count的值就是0。
要想引用一个具有多个值的表单元素的单个值,你一定得为这个值定索引参数。索引参数可以是1到Request.Form(element).Count之间的任何数字。如果你引用了多个表彰参数之人,而不指定索引,数据就会返回为逗号分隔的字符串。
如果你对Request.Form使用了参数,Web服务器会解析该HTTP请求主体,并返回指定的数据。如果你的应用程序要求来自表单的未解析的数据,你可以通过调用不带任何参数的Request.Form来访问它。
Note: |
---|
如果使用ASP,并post发送大于100KB的数据,就不能使用Request.Form了。如果你的应用程序需要post发送大于这个限制的数据,可以使用Request.BinaryRead方法写一个组件。 |
你可以遍历遍一个表单请求中的所有的数据值。举个例子,如果一个用户用两个指定的值Chocolate和Butterscotch填充一个表单元素FavoriteFlavor,你可以用下面的脚本检索到那些值。
<% For i = 1 To Request.Form("FavoriteFlavor").Count Response.Write Request.Form("FavoriteFlavor")(i) & "<BR>" Next %>
下面的脚本将显示下面的结果。
Chocolate Butterscotch
你可以使用这种技术来显示参数名称,如下面的脚本所示:
<% For i = 1 to Request.Form("FavoriteFlavor").count %> Request.Form(FavoriteFlavor) = <%= Request.Form("FavoriteFlavor")(i)_ %> <BR> <% Next %>
这段脚本在浏览器中显示如下内容。
Request.Form(FavoriteFlavor) = Chocolate Request.Form(FavoriteFlavor) = Butterscotch
示例代码
考虑下面的HTML表单:
<FORM ACTION = "/scripts/submit.asp" METHOD = "post"> <P>Your first name: <INPUT NAME = "firstname" SIZE = 48> <P>What is your favorite ice cream flavor: <SELECT NAME = "flavor"> <OPTION>Vanilla <OPTION>Strawberry <OPTION>Chocolate <OPTION>Rocky Road</SELECT> <P><INPUT TYPE = SUBMIT> </FORM>
Note: |
---|
如果你的表单包含了用同一名称的多个对象(比如说,HTML的SELECT选项卡),在表单集合中的这个项将会成所有选中值的一个逗号分隔的列表。 |
根据那个表单,将发送以下请求主体:
firstname=James&flavor=Rocky+Road
然后可以使用下面的脚本:
Welcome, <%= Request.Form("firstname") %>. Your favorite flavor is <%= Request.Form("flavor") %>.
下面是输出结果:
Welcome, James. Your favorite flavor is Rocky Road.
Caution: |
---|
在上面的示例中,用户的输入没有经过校验就输出了,它可能导致一个安全风险。 |
欲进一步了解,请参阅MS Press - Writing Secure Code。
如果用了下面的脚本:
The unparsed form data is: <%= Request.Form %>
输出将是:
The unparsed form data is: firstname=James&flavor=Rocky+Road
必备条件
Client: Requires Windows XP Professional, Windows 2000 Professional, or Windows NT Workstation 4.0.
Server: Requires Windows Server 2003, Windows 2000 Server, or Windows NT Server 4.0.
Product: IIS