在网上看到 一个流言簿
步骤一:先设计一个留言表单的网页(如:GUESTBOOK1.ASP,这不用我在这儿说教了吧?)。见下图:
步骤二:在设计好留言表单后,我们开始进行编写处理留言的ASP程序。
我们要编写处理留言的ASP程序,最重要的问题是如何实现存取留言。而在ASP程序中,要存取文件,我们必须建立FILESYSTEMOBJECT对象(该对象主要用于读取UNICODE或ASCII码的文件)。而要建立FILESYSTEMOBJECT对象,我们又可以使用以下的语句:
SET 对象实例 = CREATEOBJECT("SCRIPTING.FILESYSTEMOBJECT")
FILESYSTEMOBJECT对象的方法包括:CREATETEXTFILE 和OPENTEXTFILE:
CREATETEXTFILE :建立一个文件名称,并返回一个TEXTSTREAM对象提供你读写文件
OPENTEXTFILE :打开一个已存在的文件并建立一个TEXTSTREAM对象以供你读写文件在建立并打开一个可供编辑的文件后,我们最后可以调用TEXTSTREAM对象下的方法WRITELINE(把信息写入到已打开的文件中并换行)和方法READLINE(读取已打开文件的一行信息)来存取文件。
因此,要实现存取留言的ASP程序,我们可以大致构思如下:
先建立FILESYSTEMOBJECT对象;然后通过该对象来调用OPENTEXTFILE打开文件或者调用CREATETEXTFILE来创建新的文件,建立TEXTSTREAM对象;最后我们再进行调用TEXTSTREAM对象的WRITELINE和READLINE进行存取文件。解决了这个主要问题后,我们可以将处理留言的ASP程序写成如下所示:
< %
NAME = REQUEST("NAME") )
EMAIL = REQUEST("EMAIL")
SUBJECT = REQUEST("SUBJECT")
MEMO = REQUEST("MEMO")
'从留言表单取得数据
IF NAME = "" OR EMAIL = "" OR SUBJECT = "" OR MEMO = "" THEN
RESPONSE.WRITE "输入框不能为空白!"
RESPONSE.END
END IF
'检查表单的各输入框是否有信息输入,若留有空输入框没填则显示说明信息:"输入框不能为空白!" 并停止执行下面的程序。
LINE1 = "留言人:" & NAME
LINE1 = LINE1 & STRING(5, " ")
EMAIL = "< A HREF=MAILTO:" & EMAIL & ">" & EMAIL & "< /A>"
LINE1 = LINE1 & "EMAIL?" & EMAIL & "< BR>"
LINE2 = "主 题:" & SUBJECT & "< BR>"
MEMO = REPLACE( MEMO, VBCRLF, "< BR>" )
LINE3 = "< TABLE BORDER=1>< TR>< TD>"
LINE3 = LINE3 & "您的留言:" & MEMO & "< /TD>< /TR>< /TABLE>"
LINE4 = "时 间:" & NOW()
'定义留言的显示格式,其中留言信息用信息框框起来。
ON ERROR RESUME NEXT
'避免如果执行下面的READALL(读取已打开文件的全部信息)时,无法读取信息就造成的程序错误的情况发生,因此加入此句用于忽略所有的错误。
SET FSO = SERVER.CREATEOBJECT("SCRIPTING.FILESYSTEMOBJECT") APPLICATION.LOCK
TXTPATH = SERVER.MAPPATH("BOOK1.TXT")
NEWPATH = SERVER.MAPPATH("NEWBOOK.TXT")
FSO.MOVEFILE TXTPATH, NEWPATH
SET FIN = FSO.OPENTEXTFILE(NEWPATH, , TRUE)
SET FOUT = FSO.CREATETEXTFILE(TXTPATH)
'建立 FILESYSTEMOBJECT对象,并锁定APPLICATION对象,不让任何两位上网者同时执行留言操作,同时建立和打开一个TEXTSTREAM对象,指向要对其实行操作,用于留言记录的文本BOOK1.TXT。
FOUT.WRITELINE LINE1
FOUT.WRITELINE LINE2
FOUT.WRITELINE LINE3
FOUT.WRITELINE LINE4
FOUT.WRITELINE "< HR>"
FOUT.WRITELINE FIN.READALL
'把留言表单中的信息分行写入到已打开的文件中。
FIN.CLOSE
FSO.DELETEFILE NEWPATH, TRUE
APPLICATION.UNLOCK
RESPONSE.REDIRECT "GUESTBOOK1.ASP"
'关闭并删除GBOOKOLD.TXT,然后解除APPLICATION对象的锁定,再指引客户端浏览器到新的WEB页面GUESTBOOK1.ASP。
%>
将上述代码COPY到你的记事本,注意:要记得将所有“<”符号后面多加的空格去掉,然后存成文件MANAGE1.ASP。
步骤三:设计留言页面
因为我们要本留言簿的留言显示在留言表单下面,所以我们可以将以下HTML代码COPY到GUESTBOOK1.ASP的最后面。
< HTML>
< HEAD>
< META HTTP-EQUIV="CONTENT-TYPE" CONTENT="TEXT/HTML; CHARSET=GB2312">
< TITLE>您的留言< /TITLE>
< LINK REL="STYLESHEET" HREF="../IMAGES/TEXT.CSS">
< /HEAD>
< BODY TEXT="#000000" BGCOLOR="#FFFFFF" BACKGROUND="B01.JPG">
< H2 ALIGN="CENTER">您的留言< /H2>
< HR NOSHADE COLOR="RED">
< !--#INCLUDE FILE="BOOK1.TXT" -->
< /BODY>
< /HTML>
< % RESPONSE.END %>
文中带色的部分看不懂 为什么需要两个文本呢 打开一个不就可以了吗?
我编的是这样的也可以存上啊?
SET FSO = SERVER.CREATEOBJECT("SCRIPTING.FILESYSTEMOBJECT") APPLICATION.LOCK
TXTPATH = SERVER.MAPPATH("BOOK1.TXT")
SET FOUT = FSO.CREATETEXTFILE(TXTPATH)
FOUT.WRITELINE LINE1
FOUT.WRITELINE LINE2
FOUT.WRITELINE LINE3
FOUT.WRITELINE LINE4
FOUT.WRITELINE "< HR>"
FOUT.CLOSE
APPLICATION.UNLOCK
RESPONSE.REDIRECT "GUESTBOOK1.ASP"
高手给小弟指点一下
谢谢!
%>