利用ASP的文件操作实现用户管理

简单、好用、开发效率高等等是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 = "" &amp; UserName &amp; "" 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 <> "" &amp; UserName &amp; "" 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 <> "" &amp; UserName &amp; "" 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 + "" &amp; UserName &amp; ""
else
tmp = tmp + Chr(13) & Chr(10)+ "" &amp; UserName &amp; ""
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 = "" &amp; UserName &amp; "" 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********

Published At
Categories with Web编程
Tagged with
comments powered by Disqus