分享
 
 
 

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

王朝asp·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

利用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 = "`" & 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***************************************

<%

dim UserNmFile,UserPwdFile,NmFile,GenderFile,MmFile

UserNmFile="txt/UserName.txt"

UserPwdFile="txt/Password.txt"

NmFile="txt/Name.txt"

GenderFile="txt/Gender.txt"

MmFile="txt/Memo.txt"

UserNmFile=Server.MapPath(UserNmFile)

UserPwdFile=Server.MapPath(UserPwdFile)

NmFile=Server.MapPath(NmFile)

GenderFile=Server.MapPath(GenderFile)

MmFile=Server.MapPath(MmFile)

'////////////////////////////////////////////////////////

'写用户信息到文件

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

%>

'********************index.htm*************************************

<html>

<body>

<a href="register.htm">用户注册 </a><br>

<a href="login.htm">用户登陆 </a><br>

<a href="modify.htm">用户修改 </a><br>

<a href="delete.htm">用户删除 </a><br>

</body>

</html>

'****************register.htm***************************************

<html>

<body>

用户注册

<form name="form1" method="post" action="regsubmit.asp">

<table border="0">

<tr>

<td width="28%">用户名</td>

<td width="72%">

<input type="text" name="edtUserNm">

</td>

</tr>

<tr>

<td width="28%">密码</td>

<td width="72%">

<input type="text" name="edtUserPwd">

</td>

</tr>

<tr>

<td width="28%">姓名</td>

<td width="72%">

<input type="text" name="edtNm">

</td>

</tr>

<tr>

<td width="28%">性别</td>

<td width="72%">

<input type="text" name="edtGender">

</td>

</tr>

<tr>

<td width="28%">简历</td>

<td width="72%">

<textarea name="edtMm"></textarea>

</td>

</tr>

<tr>

<td width="28%"> </td>

<td width="72%">

<input type="submit" name="Submit" value="提交">

</td>

</tr>

</table>

<p> </p>

</form>

</body>

</html>

'***************************regsubmit.asp**************************

<!--#include file="fun.inc"-->

<%

dim UserNm,UserPwd,Nm,Gender,Memo

UserNm=Request("edtUserNm")

UserPwd=Request("edtUserPwd")

Nm=Request("edtNm")

Gender=Request("edtGender")

Mm=Request("edtMm")

if trim(UserNm)="" then

Response.Write "用户名不能为空"

Response.End

end if

'判断用户是否已存在

if UserExist(UserNm,UserNmFile) then

Response.Write "用户已存在"

Response.End

end if

'写用户信息到各个文件

WriteUser UserNm,UserNmFile,UserNm

WriteUser UserNm,UserPwdFile,UserPwd

WriteUser UserNm,NmFile,Nm

WriteUser UserNm,GenderFile,Gender

WriteUser UserNm,MmFile,Mm

Response.Write "注册成功,以下为注册信息" & "<br><br>"

Response.Write "用户名:" & UserNm & "<br>"

Response.Write "密码:" & UserPwd & "<br>"

Response.Write "姓名:" & Nm & "<br>"

Response.Write "性别:" & Gender & "<br>"

Response.Write "简历:" & Mm

%>

<html>

<body>

</body>

</html>

'****************************login.htm************************

<html>

<body>

用户登陆

<form name="form1" method="post" action="loginsubmit.asp">

<table border="0">

<tr>

<td width="28%">用户名</td>

<td width="72%">

<input type="text" name="edtUserNm">

</td>

</tr>

<tr>

<td width="28%">密码</td>

<td width="72%">

<input type="text" name="edtUserPwd">

</td>

</tr>

<tr>

<td width="28%"> </td>

<td width="72%">

<input type="submit" name="Submit" value="登陆">

</td>

</tr>

</table>

</form>

</body>

</html>

'****************************loginsubmit.asp**********************

<!--#include file="fun.inc"-->

<%

dim UserNm,UserPwd

UserNm=Request("edtUserNm")

UserPwd=Request("edtUserPwd")

'判断用户是否已存在

if UserExist(UserNm,UserNmFile)=False then

Response.Write "用户名不存在"

Response.End

end if

dim SavePwd

SavePwd=ReadUser(UserNm,UserPwdFile)

if SavePwd<>UserPwd then

Response.Write "密码错误"

Response.End

end if

Response.Write "登陆成功"

%>

<html>

<body>

</body>

</html>

'***************************modify.htm*****************************

<html>

<body>

用户修改

<form name="form1" method="post" action="modifylist.asp">

<table border="0">

<tr>

<td width="28%">用户名</td>

<td width="72%">

<input type="text" name="edtUserNm">

</td>

</tr>

<tr>

<td width="28%"> </td>

<td width="72%">

<input type="submit" name="Submit" value="调出信息">

</td>

</tr>

</table>

</form>

</body>

</html>

'**************************modifylist.asp****************************

<!--#include file="fun.inc"-->

<%

dim UserNm

UserNm=Request("edtUserNm")

'判断用户是否已存在

if UserExist(UserNm,UserNmFile)=False then

Response.Write "用户名不存在"

Response.End

end if

dim UserPwd,Nm,Gender,Mm

UserPwd=ReadUser(UserNm,UserPwdFile)

Nm=ReadUser(UserNm,NmFile)

Gender=ReadUser(UserNm,GenderFile)

Mm=ReadUser(UserNm,MmFile)

%>

<html>

<body>

用户信息修改

<form name="form1" method="post" action="modifysubmit.asp">

<table border="0">

<tr>

<td width="28%">用户名</td>

<td width="72%">

<b><font color="#0000ff"><%Response.Write UserNm %></font></b>

<input type="hidden" name="edtUserNm" value=<%=UserNm %>>

</td>

</tr>

<tr>

<td width="28%">密码</td>

<td width="72%">

<input type="text" name="edtUserPwd" value=<%=UserPwd %>>

</td>

</tr>

<tr>

<td width="28%">姓名</td>

<td width="72%">

<input type="text" name="edtNm" value=<%=Nm %>>

</td>

</tr>

<tr>

<td width="28%">性别</td>

<td width="72%">

<input type="text" name="edtGender" value=<%=Gender %>>

</td>

</tr>

<tr>

<td width="28%">简历</td>

<td width="72%">

<textarea name="edtMm"><%=Mm %></textarea>

</td>

</tr>

<tr>

<td width="28%"> </td>

<td width="72%">

<input type="submit" name="Submit" value="保存修改">

</td>

</tr>

</table>

<p> </p>

</form>

</body>

</html>

'********************************modifysubmit.asp*******************

<!--#include file="fun.inc"-->

<%

dim UserNm,UserPwd,Nm,Gender,Mm

UserNm=Request("edtUserNm")

UserPwd=Request("edtUserPwd")

Nm=Request("edtNm")

Gender=Request("edtGender")

Mm=Request("edtMm")

if trim(UserNm)="" then

Response.Write "用户名不能为空"

Response.End

end if

'更新用户信息到各个文件

ModifyUser UserNm,UserNmFile,UserNm

ModifyUser UserNm,UserPwdFile,UserPwd

ModifyUser UserNm,NmFile,Nm

ModifyUser UserNm,GenderFile,Gender

ModifyUser UserNm,MmFile,Mm

Response.Write "保存成功,以下为更新后的信息" & "<br><br>"

Response.Write "用户名:" & UserNm & "<br>"

Response.Write "密码:" & UserPwd & "<br>"

Response.Write "姓名:" & Nm & "<br>"

Response.Write "性别:" & Gender & "<br>"

Response.Write "简历:" & Mm

%>

<html>

<body>

</body>

</html>

'*************************delete.htm******************************

<html>

<body>

用户删除

<form name="form1" method="post" action="deletesubmit.asp">

<table border="0">

<tr>

<td width="28%">用户名</td>

<td width="72%">

<input type="text" name="edtUserNm">

</td>

</tr>

<tr>

<td width="28%"> </td>

<td width="72%">

<input type="submit" name="Submit" value="删除">

</td>

</tr>

</table>

</form>

</body>

</html>

'*******************************deletesubmit.asp********************

<!--#include file="fun.inc"-->

<%

dim UserNm

UserNm=Request("edtUserNm")

'判断用户是否已存在

if UserExist(UserNm,UserNmFile)=False then

Response.Write "用户名不存在"

Response.End

end if

DeleteUser UserNm,UserNmFile

DeleteUser UserNm,UserPwdFile

DeleteUser UserNm,NmFile

DeleteUser UserNm,GenderFile

DeleteUser UserNm,MmFile

Response.Write "删除成功"

%>

<html>

<body>

</body>

</html>

'************************************the end*********************************

更多更好文章尽在“天铭心草堂http”-http://vip.6to23.com/tianmingxin

(2002/12/3 三金 版权所有)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有