简单、好用、开发效率高等等是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 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器