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

适用于

Request对象

备注

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

如果你喜欢这篇文章,敬请给站长打赏↑

除特别注明外,本站所有文章均为本站站长原译,转载请注明出处。