仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1262|回复: 18
打印 上一主题 下一主题

[学习教程] ASP网站制作之若何完成静态添加Html文档中Form项

[复制链接]
蒙在股里 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:32:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
ASP由于使用了COM组件所以它会变的十分强大,但是这样的强大由于Windows NT系统最初的设计问题而会引发大量的安全问题。只要在这样的组件或是操作中一不注意,哪么外部攻击就可以取得相当高的权限而导致网站瘫痪或者数据丢失;   人人好,明天和人人谈谈若何用ASP来完成静态的添加Html文档中Form项的成绩。假如你对Html对照熟习的话一定晓得有个<form></form>的HTML标志。在<form>与</form>之间有诸如类型(type)为Text、Password、Button、Submit、Reset等的标志(元素)。咱们这里所说的静态的添加Form项就是指静态的添加<Form></Form>中的Text元素。那末若何去完成静态的添加Form项呢?

   咱们先剖析剖析完成静态添加form项的思绪。

  假如是让您本人或用诸如FrontPage、Dreamweaver静态编写Html文档来增添一个又一个类型为text的form元素的话。您一定是写完第一个类型为text的form元素后,再会到场第二个类型为text的form元素,就如许一向加到知足数量前提为止。咱们先不说在加一个新的类型为text的元素时,应当将已存在且有内容、类型也为text的其他form元素也显示出来。下面所说的经由过程静态编写Html文档来增添类型为text的form元素的办法,其实就是咱们在ASP法式文件中完成静态添加类型为text的form元素的根基思绪。若何去失掉已存在且有内容、类型也为text的其他form元素的内容呢?在ASP法式中经由过程request.form("TextFieldName")可以失掉。个中的"TextFieldName"是指<form></form>中名字为"TextFieldName"的项。就是指<form><input type=text name=
"TextFieldName"></form>中的"TextFieldName"。

  如今咱们晓得若何失掉了表单的内容了,那末咱们就能够经由过程这类办法来失掉已存在且有内容、类型为text的form元素的值了。再在显示这些已有值的text项时,咱们就能够把所失掉的值赋给响应的项。接上去,咱们又会想若何去晓得一共有几何个有内容、类型为text的form项呢?咱们可以经由过程以下这类办法来失掉。那就是经由过程request.form("TextFieldName")的Count属性来失掉。这是由于在失掉表单中多个类型为Text而且同名的form元素时,咱们能失掉的是一组值,也就说它们的值是放在一个名为TextFieldName的纠合当中。而此时的count属性就是统计这个纠合中同类元素的数量的,如许咱们就能够晓得一共有几何个如许的类型为text的form元素了,而且可以用轮回语句与count属性掏出纠合各自的值。您能够会问:那末咱们又若何才干失掉这个纠合中每个名为TextFieldName类型为text的form的元素的值呢?在此之前咱们先界说一个变量I,它的初始值为1,其实这个变量I就是咱们在做轮回时的变量。接上去咱们就能够经由过程request.form("TextFieldName")(I)的办法来获得每个名为TextFieldName的类型为text的form元素的值了。还有一点要注重,就是咱们在将已有值、类型也为text的form元素的值掏出赋给响应项并显示出来的时分,咱们还应当再增添一个新的类型为text的form项。为何呢?这是为了让咱们还可以再接着持续添加新的值。否则的话,在掏出一切已有值的类型为text的form元素后,您就没有持续添加新值的中央了,那也就成不了静态添加Html文档中Form项了。所以呢,您必定不克不及健忘这很主要的一点。如今咱们晓得若何获得这些知足前提的类型为text的form的元素数量了,也晓得若何分离获得它们各自的值了。那末我又若何去掌握只仅仅将已有值、类型为text的form的元素呢?和咱们倒底若何去完成下面所说的一切呢?那末接上去我会给出它的源代码,而且会在有些中央加上正文或给出注释。
'/*DynamicAddForm.asp文件的源代码入手下手点*/
<%@ Language=VBScript %>
<%
'----------------------------------------------
'Author : WaiWai(歪歪)
'Created Date : 2000-2-20
'File Name : DynamicAddForm.ASP
'Description : Dynamic Add Form's Text Fields.
'All Rights Reserved.一切权归City Club.
'----------------------------------------------
%>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<title>Dynamic Add Form Text Elements.</title>
<style type="text/CSS">
<!--
td { font-size: 9pt}
body { font-size: 9pt}
select { font-size: 9pt}
A {text-decoration: none; color: #003366; font-size: 9pt}
A:hover {text-decoration: underline; color: #FF0000; font-size: 9pt}
-->
</style>
</HEAD>
<BODY>
<table border="1" cellspacing="0" height=400 width=98% bordercolorlight="#5E5E00" bordercolordark="#FFFFEC" bgcolor=LightGrey align=center valign=top>
<%
if trim(Request.Form("List")) = "显示已有项" then
'/*个中的trim()函数是去失落Request.Form("List")双方的空格*/
'/*当您点击了名为"显示已有项"的按钮时,咱们将会看到一切已有值的类型为text的form项*/
Response.Write "<td><form><center>已存的元素内容是:" & "</td><tr>"
for I = 1 to Request.Form("items").Count '/*已存在的Text类型的数量*/
Response.Write "<td align=center>" & Request.Form("items")(I) & "</td><tr>"
next
if trim(Request.Form("newItem"))<>"" then
Response.Write "<td align=center>" & trim(Request.Form("newItem")) Response.write "<input type=button name='Back' value='Back' Response.write "style='font-size:12pt' /*点击了<Back>按钮后就会前往上一页,也就是添加类型为text的Form项地点的页*/
Response.write "</form></td><tr>"
end if
else '/*此时标明用户是点击了名为"添加"按钮,要停止添加操作*/
Response.Write "<td align=center><form action=DynamicAddForm.asp method=post></td>"
for I = 1 to Request.Form("items").Count
'/*此时的操作是轮回显示出已存在且产有值的类型为text的form元素*/
'/*Request.Form("items").Count为已存在的Text类型的数量*/
'/*咱们可以在此处到场对所添加内容的前提判别。如判别所添加内容的长度是不是小于3等.*/
Response.Write "<td align=center><input type=text name=items value='"
Response.write Request.Form("items")(I) & "'></td><tr>"
'/*此步是将所失掉某一有值的类型为text的form元素的值显示出来*/
next
if trim(Request.Form("newItem")) <> "" then
'/*此步的目标是反省是不是用户在添加新的类型为text的form元素处有无添加新值,*/
'/*有则将此值赋给name=items的类型为text的form元素,并显示出来。*/
Response.Write "<td align=center><input type=text name=items value='"
Response.Write trim(Request.Form("newItem")) & "'"
Response.Write "><br></td><tr>"
Response.Write "<td align=center><input type=text name=newItem" Response.write "value=''></td><tr>"
'/*此处是添加一个名为newItem类型为text的form元素,让用户可以持续停止添加操作。*/
else
'/*此时标明用户在添加新的类型为text的form元素处并没有添加新的值,所以就只能列出*/
'/*一个名为newItem类型为text的form元素,让用户可以持续停止添加操作。*/
Response.Write "<td align=center><input type=text name=newItem value=''></td>"
end if
%>
<tr><td align=center><br>
<input type=submit name="List" value="显示已有项" style="font-size:12pt">
<input type=submit name="Add" value="添加" style="font-size:12pt">
</form>
</td>
<%
end if
%>
</table>
</BODY>
</HTML>
'/*DynamicAddForm.asp文件的源代码停止点*/
  您在看了这些源代码后,能够会注重到有两个类型都为text的form项元素:一个名字为items、一个名字为newItem。为何呢?这是由于咱们要区分哪些是用户经由过程点击<添加>按钮、而且输出了新值后失掉的,哪些是咱们为了让用户可以有中央可以输出新值的类型为text的form项元素。如许咱们就可以很清晰的在轮回时只列出用户已添加的、有值的类型为text的form项元素了。这就是咱们为何把它们定名成分歧的名字的原因,是否是很妙呢?呵呵 :-)。其实这类办法的关头在于使用了request.form("TextFieldName")的Count属性和request.form("TextFieldName")(I)的办法,才使得咱们更轻易的获得名为TextFieldName的类型为text的form项元素的数量和分离获得它们的值。这两种办法的用途很大,可以大大的简化咱们所要编写的代码。人人必定要记住了这两种用法。上面我再给出一个没有效到这两种用法的ASP法式源代码,人人对照对照,体味一下为何下面的代码要好。
'/*DynamicAddForm2.asp文件的源代码入手下手点*/
<%@ Language=VBScript %>
<%
'----------------------------------------------------
'Author : WaiWai(歪歪)
'Created Date : 2000/1/13
'File Name : DynamicAddForm.ASP
'Description : Dynamic Add Form's Text Fields.
'All Rights Reserved.一切权归City Club
'----------------------------------------------------
%>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<style type="text/css">
<!--
td { font-size: 9pt}
body { font-size: 9pt}
select { font-size: 9pt}
A {text-decoration: none; color: #003366; font-size: 9pt}
A:hover {text-decoration: underline; color: #FF0000; font-size: 9pt}
-->
</style>
<title>Add new mail server site. All Rights Reserved.</title>
<script language=javascript>
function mycheck(tt) {
alert("afd")
return false
}
</script>
<BODY topmargin=12>
<form name=form1 method=post>
<table border="1" cellspacing="0" height=400 width=98% bordercolorlight="#5E5E00" bordercolordark="#FFFFEC" bgcolor=LightGrey align=center valign=top>
<td align=center colspan=5 valign=top height=30>
<h4>追加新邮件办事器信息</h4>
</td><tr>
<td align=center valign=top height=10><font style="font-size:11pt">条数</font></td>
<td align=center valign=top height=10 width=43%><font style="font-size:11pt">邮件办事器URL</font></td>
<td align=center valign=top height=20 width=17%><font style="font-size:11pt">用户名参数变量</font></td>
<td align=center valign=top height=20 width=17%><font style="font-size:11pt">暗码参数变量</font></td>
<td align=center valign=top height=20 width=17%><font style="font-size:11pt">站点称号</font></td>
<tr>
<td colspan=5 valign=top height=30>
<font color=blue>[ * * * Example: * * * ]<br>
0.           990.net/prog/login?      
               
           user
      
            
pass              990.net
</font>
</td>
<tr>
<%
if trim(Request.form("num"))="" then
'/*此时暗示用户初次翻开此ASP页,所以所得的num为空,并显示出响应的输出界面供用户输出信息
'个中的num值是为来纪录类型为text的form元素的数量,与第一个代码文件中的 'request.form("items").Count后果一样.*/
'/*First time open this page.*/
Response.Write "<td align=center valign=top>1.</td>"
Response.Write "<input type=hidden name=num value=1>"
Response.Write "<td align=center valign=top >"
Response.Write "  <input type=text size=40 name=url1></td>"
Response.Write "<td align=center valign=top >  <input type=text size=12 id=text1 name=user_var1></td>" & vbcrlf
Response.Write "<td align=center valign=top >  <input type=text size=12 id=text2 name=pw_var1></td>"
Response.Write "<td align=center valign=top >  <input type=text size=12 id=text2 name=sitename1></td><tr>"
else
'/*Add new*/
'Response.Write "<td align=center valign=top>" & trim(Request.Form("num")) & ".</td>"
'/*Loop Start*/
Response.Write "<td colspan=5 valign=top>"
for I = 1 to cint(trim(Request.Form("num")))+1
%>
<%=I%>.
<%if I<10 then
'/*此处的目标是为了包管前10个元素与后89个元素缩进不异的宽度*/%>
  
<%elseif I<100 and I>9 then%>

<%end if%>
<%if I<>cint(trim(Request.Form("num")))+1 then
url="url" & I '/*生成如url1,url2......的字符串*/
user_var = "user_var" & I
pw_var = "pw_var" & I
sitename = "sitename" & I
if trim(request.form(url))<>"" and trim(Request.Form(user_var))<>"" and_ trim(Request.Form(pw_var))<>"" and trim(Request.Form(sitename))<>"" then %>
   <input type=text size=40 name=<%=url%> value=<%=trim(request.form(url))%>>   
<input type=text size=12 id=text1 name=<%=user_var%> value=<%=trim(Request.Form(user_var))%>>
   <input type=text size=12 id=text2 name=<%=pw_var%> value=<%=trim(Request.Form(pw_var))%>>
   <input type=text size=12 id=text2 name=<%=sitename%> value=<%=trim(Request.Form(sitename))%>>
<br>
<% else
%>
<script>
alert("邮件办事器URL、用户名参数变量、暗码参数变量、站点称号中有空值!")
window.history.back()
</script>
<% exit for
end if
else%>
   <input type=text size=40 name=url<%=I%>>
   
<input type=text size=12 id=text1 name=user_var<%=I%>>
     
<input type=text size=12 id=text2 name=pw_var<%=I%>>   
<input type=text size=12 id=text2 name=sitename<%=I%>>
<br>
<%end if
next
'/*Loop End*/
end if
%>
</td>
<tr>
<td colspan=5 align=center height=20>
<input type=button value="追加" style="font-size:11pt"
>   
<input type=Button value="保留" style="font-size:11pt"
>
   
<input type=button value="前往掌握台" style="font-size:11pt"
>
</td>
</table>
<%if trim(Request.Form("num"))<>"" then
'/*当入手下手给第一个类型为text的form元素添加了值的时分入手下手纪录text类型元素的数量*/%>
<input type=hidden name=num value=<%=cint(trim(Request.Form("num")))+1%>>
<%end if%>
</form>
</BODY>
</HTML>
'/*DynamicAddForm2.asp文件的源代码停止点*/
  如今人人都看到了这两种办法各自完成的法式源代码了。您有甚么设法呢?呵呵,是否是感觉第一个法式代码要比第二个法式代码简约的多呢。咱们在第一个法式代码中是在失掉同名类型为text的form元素的值时用到了request.form("TextFieldName")的Count属性来统计到今朝为止一共有几何个如许的form元素。而在第二个法式代码中,咱们是经由过程<form></form>中类型为hidden的元从来保留和失掉这个数的。还有一点值得再提一次,那就是把这些类型为text的form元素的名字都定名成统一名字。这就能够防止在第二个法式代码中诸如“url="url" & I”的局部了。固然了,这个做法在是晓得request.form("TextFieldName")有Count这个属性的条件下才会想到的了。所以第一个法式代码的长处在于它充实使用了在获得同名同类型的form元素的值时的Count属性和值的取法。呵呵,处理成绩的好思绪与办法是基于对所用东西有着充实懂得的基本之上的。。一切这些的关头是咱们要不休的去做,如许咱们才干更好的融会和懂得,进修到、有着更好更妙的办法。
优点:简单易学、开发速度快、有很多年“历史”,能找到非常多别人做好的程序来用、配合activeX功能强大,很多php做不到的asp+activeX能做到,例如银行安全控件
因胸联盟 该用户已被删除
沙发
发表于 2015-2-4 01:58:48 | 只看该作者
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
爱飞 该用户已被删除
板凳
发表于 2015-2-9 09:38:10 | 只看该作者
如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助:
活着的死人 该用户已被删除
地板
发表于 2015-2-27 05:18:46 | 只看该作者
下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助...
小女巫 该用户已被删除
5#
发表于 2015-3-8 22:11:57 | 只看该作者
下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助...
若天明 该用户已被删除
6#
发表于 2015-3-9 04:54:44 | 只看该作者
下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助...
7#
发表于 2015-3-13 01:07:09 | 只看该作者
Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名")
老尸 该用户已被删除
8#
发表于 2015-3-15 04:57:21 | 只看该作者
Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write
莫相离 该用户已被删除
9#
发表于 2015-3-22 02:11:11 | 只看该作者
Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write
乐观 该用户已被删除
10#
发表于 2015-3-22 21:15:44 | 只看该作者
代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
简单生活 该用户已被删除
11#
发表于 2015-3-27 20:09:57 | 只看该作者
另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件)
兰色精灵 该用户已被删除
12#
发表于 2015-4-1 12:10:59 | 只看该作者
哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的?
第二个灵魂 该用户已被删除
13#
发表于 2015-4-4 02:36:25 | 只看该作者
尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。
山那边是海 该用户已被删除
14#
发表于 2015-4-10 17:34:15 | 只看该作者
我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。
海妖 该用户已被删除
15#
发表于 2015-4-17 20:40:25 | 只看该作者
学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。
蒙在股里 该用户已被删除
16#
 楼主| 发表于 2015-4-18 03:49:04 | 只看该作者
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:
admin 该用户已被删除
17#
发表于 2015-4-26 07:11:51 | 只看该作者
先学习用frontpage熟悉html编辑然后学习asp和vbscript建议买书进行系统学习
小魔女 该用户已被删除
18#
发表于 2015-4-28 02:01:25 | 只看该作者
哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的?
分手快乐 该用户已被删除
19#
发表于 2015-5-3 16:03:03 | 只看该作者
另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-6 04:06

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表