您的位置:首页网页设计ASP实例 → 利用ASP的文件操作实现用户管理

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

时间:2004/11/7 3:02:00来源:本站整理作者:蓝点我要评论(0)

    简单、好用、开发效率高等等是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*************************************







用户注册 


用户登陆 


用户修改 


用户删除 








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







用户注册



  

    

      用户名

      

        

      

    

    

      密码

      

        

      

    

    

      姓名

      

        

      

    

    

      性别

      

        

      

    

    

      简历

      

        

      

    

    

       

      

        

      

    



  

  

 

















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





<%

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 "注册成功,以下为注册信息" & "

"

Response.Write "用户名:" & UserNm & "
"

Response.Write "密码:" & UserPwd & "
"

Response.Write "姓名:" & Nm & "
"

Response.Write "性别:" & Gender & "
"

Response.Write "简历:" & Mm 

%>













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







用户登陆



  

    

      用户名

      

        

      

    

    

      密码

      

        

      

    

    

       

      

        

      

    

  

















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





<%

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 "登陆成功"



%>













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







用户修改



  

    

      用户名

      

        

      

    

    

       

      

        

      

    

  

















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



<%

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)



%>





用户信息修改



  

    

      用户名

      

        <%Response.Write UserNm  %>

        >

      

    

    

      密码

      

        >

      

    

    

      姓名

      

        >

      

    

    

      性别

      

        >

      

    

    

      简历

      

        <%=Mm %>

      

    

    

       

      

        

      

    



  

  

 

















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





<%

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 "保存成功,以下为更新后的信息" & "

"

Response.Write "用户名:" & UserNm & "
"

Response.Write "密码:" & UserPwd & "
"

Response.Write "姓名:" & Nm & "
"

Response.Write "性别:" & Gender & "
"

Response.Write "简历:" & Mm 

%>













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







用户删除



  

    

      用户名

      

        

      

    

    

       

      

        

      

    

  

















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





<%

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 "删除成功"



%>











********************the end****************************

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 迅雷新手完全入门手册 asp下面javascript上传图片限制格式大小方法告诉大家网页弹出窗口应用总结ASP常见错误类型大全asp常见错误分析和解决办法

人气排行 总是弹出visual studio 实时调试器 三种解决SQLSERVER存储过程及调用详解Asp获取真实IP地址ASP中连接Mssql的几种方法一个简单好用的UBB编辑器(含代码)如何用Split将字符串转换为数组并获取数组下ASP防止表单重复提交的办法告诉你免费的简单聊天室源代码