简单、好用、开发效率高等等是ASP的优点,但是其系统操作方面如文件操作等则 是比较微弱的。要想实现这方面的功能,只有采取调用组件的办法。
FileSystemObject对象就是一个例子。ASP安装后,该对象就在系统中注册了。
不过其功能也非常一般,只能操作文本类型的文件。不过也可以满足我们的一些
需要了。前几天我的一个同事的一个朋友在网上申请了一个支持ASP的空间,想
实现诸如用户注册、信息修改、用户注销等功能,又不想用数据库来实现,因为
要进行一大堆的设置。其实利用FileSystemObject操作文本文件就可以实现。
实现的思路是:为每项信息建立一个文本文件,如姓名、性别、年龄等。所
有用户的同一个信息项都保存在相对应的文件中。如每个用户的姓名信息都保存
在姓名文件中。并且每个用户的信息都以特殊的标志开始和结束,读取信息时就
根据这些标志进行定位。例如开始标志用“用户名
” ,结束标志用“e
”。
只要不是常用的字符串,就可以作为定位的标志。另外,还有两个文件是必不可
少的:那就是用户名、密码文件。判断用户是否存在、用户登陆等就是利用这两
个文件实现的。下面介绍的就是本人的具体实现代码。
在程序编写前我先搞了搞了一个公共的函数单元fun.inc,这里面是一些比较
通用的函数,供其它的ASP文件包含并调用。
首先是些用户信息的函数,包括用户名、文件名、用户信息三个参数,都是
字符串类型,其中用户信息还可以是多行。代码如下:
Sub WriteUser(UserName,FileName,UserInfo)
Dim fs, f
Set fs = CreateObject("Scripting.FileSystemObject")
If fs.FileExists(FileName) = False Then
fs.CreateTextFile (FileName)
End If
'以添加方式打开文件
Set f = fs.OpenTextFile(FileName, 8)
'用户信息开始标志
f.WriteLine ("" & UserName & "
")
f.WriteLine (UserInfo)
'用户信息结束标志
f.WriteLine ("e
")
f.Close
Set f = Nothing
Set fs = Nothing
End Sub
读用户信息的函数只需要两个参数:用户名和文件名,用户的信息作为函数
的返回值,实现的思路就是寻找开始、结束标志,并把它们之间的信息返回。代
码如下:
Function ReadUser(UserName,FileName)
Dim i
Dim s
Dim ret
Dim fs, f
Set fs = CreateObject("Scripting.FileSystemObject")
if fs.FileExists(FileName)=false then
Set fs=Nothing
ReadUser=""
Exit Function
end if
'以只读方式打开文件
Set f = fs.OpenTextFile(FileName, 1)
Do While f.AtEndOfStream <> True
s = f.ReadLine
If s = "" & UserName & "
" Then
s = f.ReadLine
ret=""
Do While s <> "e
"
if ret="" then
ret = ret + s
else
ret = ret + Chr(13) & Chr(10)+s
end if
s = f.ReadLine
Loop
Exit Do
End If
Loop
f.Close
Set f = Nothing
Set fs = Nothing
ReadUser = ret
End Function
下面是删除用户信息的函数,同样包括用户名和文件名两个参数。程序逐行
读取对应文件,如果其它用户的信息,则保存在一个字符串变量中,否则不进行
保存,然后用变量的内容重写该文件。代码如下:
Sub DeleteUser(UserName,FileName)
Dim i
Dim s
Dim tmp
Dim fs, f
Set fs = CreateObject("Scripting.FileSystemObject")
if fs.FileExists(FileName)=false then
Set fs=Nothing
Exit Sub
end if
Set f = fs.OpenTextFile(FileName, 1)
tmp=""
Do While f.AtEndOfStream <> True
s = f.ReadLine
If s <> "" & UserName & "
" Then
if tmp="" then
tmp = tmp + s
else
tmp = tmp + Chr(13) & Chr(10)+ s
end if
Else
Do While s <> "e
"
s = f.ReadLine
Loop
End If
Loop
f.Close
Set f = fs.CreateTextFile(FileName, True)
f.WriteLine tmp
f.Close
Set f = Nothing
Set fs = Nothing
End Sub
修改用户信息函数和写用户信息函数一样,带有用户名、文件名、用户信息
三个参数,只不过该函数的用户信息是更新后的信息。程序的实现和删除用户的
过程差不多,删除用户不保存要删除用户的信息到变量,修改用户则把更新后信
息保存到变量中代替原来的信息。代码如下:
Sub ModifyUser(UserName,FileName,NewUserInfo)
Dim i
Dim s
Dim tmp
Dim fs, f
Set fs = CreateObject("Scripting.FileSystemObject")
if fs.FileExists(FileName)=false then
Set fs=Nothing
Exit Sub
end if
Set f = fs.OpenTextFile(FileName, 1)
tmp=""
Do While f.AtEndOfStream <> True
s = f.ReadLine
If s <> "" & UserName & "
" Then
if tmp="" then
tmp = tmp + s
else
tmp = tmp + Chr(13) & Chr(10)+ s
end if
Else
Do While s <> "e
"
s = f.ReadLine
Loop
if tmp="" then
tmp = tmp + "" & UserName & "
"
else
tmp = tmp + Chr(13) & Chr(10)+ "" & UserName & "
"
end if
tmp = tmp + Chr(13) & Chr(10)+ NewUserInfo
tmp = tmp + Chr(13) & Chr(10) + "e
"
End If
Loop
f.Close
Set f = fs.CreateTextFile(FileName, True)
f.WriteLine tmp
f.Close
Set f = Nothing
Set fs = Nothing
End Sub
还有一个函数是用来判断用户是否存在,通过在保存用户名的文件中进行定
位来实现,代码如下:
Function UserExist(UserName,FileName)
Dim fs, f
Set fs = CreateObject("Scripting.FileSystemObject")
if fs.FileExists(FileName)=False then
Set fs=Nothing
UserExist=False
Exit Function
end if
Set f = fs.OpenTextFile(FileName, 1)
Do While f.AtEndOfStream <> True
s = f.ReadLine
If s = "" & UserName & "
" Then
UserExist = True
Exit Function
End If
Loop
f.Close
Set f = Nothing
Set fs = Nothing
UserExist = False
End Function
下面就是一些文件的完整代码,演示如何通过调用上面的函数来实现基
本的用户管理:用户注册、用户登陆、用户修改、用户删除。仅供参考。程
序在Win2000 Professional+IIS调试通过。注意,文本文件都保存在当前目
录的子目录“txt”下,如果没有此目录,请手工建立,程序实现略。
'fun.inc******************
1
2dim UserNmFile,UserPwdFile,NmFile,GenderFile,MmFile
3
4UserNmFile="txt/UserName.txt"
5UserPwdFile="txt/Password.txt"
6NmFile="txt/Name.txt"
7GenderFile="txt/Gender.txt"
8MmFile="txt/Memo.txt"
9
10UserNmFile=Server.MapPath(UserNmFile)
11UserPwdFile=Server.MapPath(UserPwdFile)
12NmFile=Server.MapPath(NmFile)
13GenderFile=Server.MapPath(GenderFile)
14MmFile=Server.MapPath(MmFile)
15'////////////////////////////////////////////////////////
16'写用户信息到文件
17Sub WriteUser(UserName,FileName,UserInfo)
18Dim fs, f
19Set fs = CreateObject("Scripting.FileSystemObject")
20If fs.FileExists(FileName) = False Then
21fs.CreateTextFile (FileName)
22End If
23'以添加方式打开文件
24Set f = fs.OpenTextFile(FileName, 8)
25'用户信息开始标志
26f.WriteLine ("`" & UserName & "`")
27f.WriteLine (UserInfo)
28'用户信息结束标志
29f.WriteLine ("`e`")
30
31f.Close
32Set f = Nothing
33Set fs = Nothing
34End Sub
35'读取用户信息
36Function ReadUser(UserName,FileName)
37Dim i
38Dim s
39Dim ret
40Dim fs, f
41
42Set fs = CreateObject("Scripting.FileSystemObject")
43if fs.FileExists(FileName)=false then
44Set fs=Nothing
45ReadUser=""
46Exit Function
47end if
48'以只读方式打开文件
49Set f = fs.OpenTextFile(FileName, 1)
50
51Do While f.AtEndOfStream <> True
52s = f.ReadLine
53If s = "`" & UserName & "`" Then
54s = f.ReadLine
55ret=""
56Do While s <> "`e`"
57if ret="" then
58ret = ret + s
59else
60ret = ret + Chr(13) & Chr(10)+s
61end if
62s = f.ReadLine
63Loop
64Exit Do
65End If
66Loop
67
68f.Close
69Set f = Nothing
70Set fs = Nothing
71ReadUser = ret
72End Function
73'删除用户信息
74Sub DeleteUser(UserName,FileName)
75Dim i
76Dim s
77Dim tmp
78Dim fs, f
79
80Set fs = CreateObject("Scripting.FileSystemObject")
81if fs.FileExists(FileName)=false then
82Set fs=Nothing
83Exit Sub
84end if
85Set f = fs.OpenTextFile(FileName, 1)
86tmp=""
87Do While f.AtEndOfStream <> True
88s = f.ReadLine
89If s <> "`" & UserName & "`" Then
90if tmp="" then
91tmp = tmp + s
92else
93tmp = tmp + Chr(13) & Chr(10)+ s
94end if
95Else
96Do While s <> "`e`"
97s = f.ReadLine
98Loop
99End If
100Loop
101
102f.Close
103Set f = fs.CreateTextFile(FileName, True)
104f.WriteLine tmp
105
106f.Close
107Set f = Nothing
108Set fs = Nothing
109End Sub
110'修改用户信息
111Sub ModifyUser(UserName,FileName,NewUserInfo)
112Dim i
113Dim s
114Dim tmp
115Dim fs, f
116
117Set fs = CreateObject("Scripting.FileSystemObject")
118if fs.FileExists(FileName)=false then
119Set fs=Nothing
120Exit Sub
121end if
122Set f = fs.OpenTextFile(FileName, 1)
123tmp=""
124Do While f.AtEndOfStream <> True
125s = f.ReadLine
126If s <> "`" & UserName & "`" Then
127if tmp="" then
128tmp = tmp + s
129else
130tmp = tmp + Chr(13) & Chr(10)+ s
131end if
132Else
133Do While s <> "`e`"
134s = f.ReadLine
135Loop
136if tmp="" then
137tmp = tmp + "`" & UserName & "`"
138else
139tmp = tmp + Chr(13) & Chr(10)+ "`" & UserName & "`"
140end if
141tmp = tmp + Chr(13) & Chr(10)+ NewUserInfo
142tmp = tmp + Chr(13) & Chr(10) + "`e`"
143End If
144Loop
145
146f.Close
147Set f = fs.CreateTextFile(FileName, True)
148f.WriteLine tmp
149
150f.Close
151Set f = Nothing
152Set fs = Nothing
153End Sub
154'判断用户是否已存在
155Function UserExist(UserName,FileName)
156Dim fs, f
157
158Set fs = CreateObject("Scripting.FileSystemObject")
159if fs.FileExists(FileName)=False then
160Set fs=Nothing
161UserExist=False
162Exit Function
163end if
164Set f = fs.OpenTextFile(FileName, 1)
165
166Do While f.AtEndOfStream <> True
167s = f.ReadLine
168If s = "`" & UserName & "`" Then
169UserExist = True
170Exit Function
171End If
172Loop
173
174f.Close
175Set f = Nothing
176Set fs = Nothing
177
178UserExist = False
179End Function
180
'index.htm*****************
1<html>
2<body>
3<a href="register.htm">用户注册 </a><br/>
4<a href="login.htm">用户登陆 </a><br/>
5<a href="modify.htm">用户修改 </a><br/>
6<a href="delete.htm">用户删除 </a><br/>
7</body>
8</html>
'register.htm***********************
1<html>
2<body>
3用户注册
4<form action="regsubmit.asp" method="post" name="form1">
5<table border="0">
6<tr>
7<td width="28%">用户名</td>
8<td width="72%">
9<input name="edtUserNm" type="text"/>
10</td>
11</tr>
12<tr>
13<td width="28%">密码</td>
14<td width="72%">
15<input name="edtUserPwd" type="text"/>
16</td>
17</tr>
18<tr>
19<td width="28%">姓名</td>
20<td width="72%">
21<input name="edtNm" type="text"/>
22</td>
23</tr>
24<tr>
25<td width="28%">性别</td>
26<td width="72%">
27<input name="edtGender" type="text"/>
28</td>
29</tr>
30<tr>
31<td width="28%">简历</td>
32<td width="72%">
33<textarea name="edtMm"></textarea>
34</td>
35</tr>
36<tr>
37<td width="28%"> </td>
38<td width="72%">
39<input name="Submit" type="submit" value="提交"/>
40</td>
41</tr>
42</table>
43<p> </p>
44</form>
45</body>
46</html>
'*regsubmit.asp
1
2dim UserNm,UserPwd,Nm,Gender,Memo
3UserNm=Request("edtUserNm")
4UserPwd=Request("edtUserPwd")
5Nm=Request("edtNm")
6Gender=Request("edtGender")
7Mm=Request("edtMm")
8
9if trim(UserNm)="" then
10Response.Write "用户名不能为空"
11Response.End
12end if
13
14'判断用户是否已存在
15if UserExist(UserNm,UserNmFile) then
16Response.Write "用户已存在"
17Response.End
18end if
19
20'写用户信息到各个文件
21WriteUser UserNm,UserNmFile,UserNm
22WriteUser UserNm,UserPwdFile,UserPwd
23WriteUser UserNm,NmFile,Nm
24WriteUser UserNm,GenderFile,Gender
25WriteUser UserNm,MmFile,Mm
26
27Response.Write "注册成功,以下为注册信息" & "
<br/>
<br/>
1"
2Response.Write "用户名:" & UserNm & "
<br/>
1"
2Response.Write "密码:" & UserPwd & "
<br/>
1"
2Response.Write "姓名:" & Nm & "
<br/>
1"
2Response.Write "性别:" & Gender & "
<br/>
1"
2Response.Write "简历:" & Mm
1<html>
2<body>
3</body>
4</html>
'****login.htm
1<html>
2<body>
3用户登陆
4<form action="loginsubmit.asp" method="post" name="form1">
5<table border="0">
6<tr>
7<td width="28%">用户名</td>
8<td width="72%">
9<input name="edtUserNm" type="text"/>
10</td>
11</tr>
12<tr>
13<td width="28%">密码</td>
14<td width="72%">
15<input name="edtUserPwd" type="text"/>
16</td>
17</tr>
18<tr>
19<td width="28%"> </td>
20<td width="72%">
21<input name="Submit" type="submit" value="登陆"/>
22</td>
23</tr>
24</table>
25</form>
26</body>
27</html>
'******loginsubmit.asp
1
2dim UserNm,UserPwd
3UserNm=Request("edtUserNm")
4UserPwd=Request("edtUserPwd")
5
6'判断用户是否已存在
7if UserExist(UserNm,UserNmFile)=False then
8Response.Write "用户名不存在"
9Response.End
10end if
11
12dim SavePwd
13SavePwd=ReadUser(UserNm,UserPwdFile)
14
15if SavePwd<>UserPwd then
16Response.Write "密码错误"
17Response.End
18end if
19
20Response.Write "登陆成功"
21
1<html>
2<body>
3</body>
4</html>
'modify.htm**
1<html>
2<body>
3用户修改
4<form action="modifylist.asp" method="post" name="form1">
5<table border="0">
6<tr>
7<td width="28%">用户名</td>
8<td width="72%">
9<input name="edtUserNm" type="text"/>
10</td>
11</tr>
12<tr>
13<td width="28%"> </td>
14<td width="72%">
15<input name="Submit" type="submit" value="调出信息"/>
16</td>
17</tr>
18</table>
19</form>
20</body>
21</html>
'modifylist.asp**
1
2dim UserNm
3UserNm=Request("edtUserNm")
4
5'判断用户是否已存在
6if UserExist(UserNm,UserNmFile)=False then
7Response.Write "用户名不存在"
8Response.End
9end if
10
11dim UserPwd,Nm,Gender,Mm
12UserPwd=ReadUser(UserNm,UserPwdFile)
13Nm=ReadUser(UserNm,NmFile)
14Gender=ReadUser(UserNm,GenderFile)
15Mm=ReadUser(UserNm,MmFile)
16
1<html>
2<body>
3用户信息修改
4<form action="modifysubmit.asp" method="post" name="form1">
5<table border="0">
6<tr>
7<td width="28%">用户名</td>
8<td width="72%">
9<b><font color="#0000ff">```
10Response.Write UserNm
11```</font></b>
12<input =usernm="" ```="" name="edtUserNm" type="hidden" value="```"/>
13</td>
14</tr>
15<tr>
16<td width="28%">密码</td>
17<td width="72%">
18<input =userpwd="" ```="" name="edtUserPwd" type="text" value="```"/>
19</td>
20</tr>
21<tr>
22<td width="28%">姓名</td>
23<td width="72%">
24<input =nm="" ```="" name="edtNm" type="text" value="```"/>
25</td>
26</tr>
27<tr>
28<td width="28%">性别</td>
29<td width="72%">
30<input =gender="" ```="" name="edtGender" type="text" value="```"/>
31</td>
32</tr>
33<tr>
34<td width="28%">简历</td>
35<td width="72%">
36<textarea name="edtMm">```
37=Mm
38```</textarea>
39</td>
40</tr>
41<tr>
42<td width="28%"> </td>
43<td width="72%">
44<input name="Submit" type="submit" value="保存修改"/>
45</td>
46</tr>
47</table>
48<p> </p>
49</form>
50</body>
51</html>
'*************modifysubmit.asp
1
2dim UserNm,UserPwd,Nm,Gender,Mm
3UserNm=Request("edtUserNm")
4UserPwd=Request("edtUserPwd")
5Nm=Request("edtNm")
6Gender=Request("edtGender")
7Mm=Request("edtMm")
8
9if trim(UserNm)="" then
10Response.Write "用户名不能为空"
11Response.End
12end if
13
14'更新用户信息到各个文件
15ModifyUser UserNm,UserNmFile,UserNm
16ModifyUser UserNm,UserPwdFile,UserPwd
17ModifyUser UserNm,NmFile,Nm
18ModifyUser UserNm,GenderFile,Gender
19ModifyUser UserNm,MmFile,Mm
20
21Response.Write "保存成功,以下为更新后的信息" & "
<br/>
<br/>
1"
2Response.Write "用户名:" & UserNm & "
<br/>
1"
2Response.Write "密码:" & UserPwd & "
<br/>
1"
2Response.Write "姓名:" & Nm & "
<br/>
1"
2Response.Write "性别:" & Gender & "
<br/>
1"
2Response.Write "简历:" & Mm
1<html>
2<body>
3</body>
4</html>
'delete.htm*****
1<html>
2<body>
3用户删除
4<form action="deletesubmit.asp" method="post" name="form1">
5<table border="0">
6<tr>
7<td width="28%">用户名</td>
8<td width="72%">
9<input name="edtUserNm" type="text"/>
10</td>
11</tr>
12<tr>
13<td width="28%"> </td>
14<td width="72%">
15<input name="Submit" type="submit" value="删除"/>
16</td>
17</tr>
18</table>
19</form>
20</body>
21</html>
'***********deletesubmit.asp
1
2dim UserNm
3UserNm=Request("edtUserNm")
4
5'判断用户是否已存在
6if UserExist(UserNm,UserNmFile)=False then
7Response.Write "用户名不存在"
8Response.End
9end if
10
11DeleteUser UserNm,UserNmFile
12DeleteUser UserNm,UserPwdFile
13DeleteUser UserNm,NmFile
14DeleteUser UserNm,GenderFile
15DeleteUser UserNm,MmFile
16
17Response.Write "删除成功"
18
1<html>
2<body>
3</body>
4</html>
the end********