选择显示字体大小

利用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****************************


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons