文章探索:   分类:    关键字:  
  + 栏目导航
  + 相关文章
asp中有关字符编码转换的几个函数
绝妙的asp生成静态页面html函数
Asp计算页面执行时间
一个简单的用存储过程分页
将asp页面转换成htm页面
ASP网站漏洞解析及黑客入侵防范方法
URL编码与SQL注入
几种常用排序算法(asp)
ASP调用带参数存储过程的几种方式
实用的ASP连接数据库的函数
ASP如何获取真实IP地址
ASP中怎么实现SQL数据库备份、恢复
判断Cookies是否处于开启状态
怎样才能将服务器端文件夹下的文件,..
几行Asp代码实现防止表单重复提交
用ASP设计网站在线人数统计程序
asp论坛在线人数统计研究
如何用ASP远程在数据库中创建Table
用ASP调用SQL Server的视图和存储过程
Asp与XML的关系
ASP读取EXCEL
在ASP中使用Oracle数据库技巧
一个通过web.Mail发送邮件的类
几种打开记录集方式的比较
购物车范例(购物车页面 )
如何使用FSO搜索硬盘文件
GB码和BIG5码的互换技术
用ASP开发WEB日期选择器
一个投票系统的源程序(coveryourasp.c..
列出服务器上的打印机


技术教程 -> ASP教程 ->  
利用ASP的文件操作实现用户管理
来源:转载   人气:743   录入时间:2007-11-8
     简单、好用、开发效率高等等是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****************************
   




Copyright(C)2007-2024 广州市佳沛数码科技有限公司 版权所有
公司地址: 广州市荔湾区东漖北路560号511室
电话:020-81803473 传真:020-81544987