WEB开发网
开发学院WEB开发ASP 利用ASP的文件操作实现用户管理 阅读

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

 2002-12-04 11:09:10 来源:WEB开发网   
核心提示:简单、好用、开发效率高等等是asp的优点,但是其系统操作方面如文件操作等则 是比较微弱的,利用ASP的文件操作实现用户管理,要想实现这方面的功能,只有采取调用组件的办法,程序实现略,'*fun.inc***<%dim UserNmFile,UserPwdFile,NmFile,GenderFile,MmF
  简单、好用、开发效率高等等是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****************************

Tags:利用 ASP 文件

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接