简单、好用、开发效率高等等是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*********************************
更多更好文章尽在“天铭心草堂http”-http://vip.6to23.com/tianmingxin
