您现在的位置: 军旅同心 >> 读书赏析 >> 学习园地 >> 电脑网络 >> 技术文章 >> 文章正文
利用ASP的文件操作实现用户管理
作者:采集员 文章来源:来源于网络 点击数: 更新时间:2005-9-10 13:33:47
    简单、好用、开发效率高等等是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,Fi

[1] [2] [3] [4] 下一页


 
免责声明:作品版权归所属媒体与作者所有!!本站刊载此文不代表同意其说法或描述,仅为提供更多信息。如果您认为我们侵犯了您的版权,请告知!本站立即删除。有异议请联系我们。
文章录入:烟灰缸    责任编辑:烟灰缸 
  • 上一篇文章:
  • 下一篇文章:
  • 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 |