标题用ASP编写留言板
栏目网络与通信
作者夏敏捷
发布2001年7期
下面给一个用ASP编写的留言板程序的完整代码。
Guestbook.htm为客户在浏览器中看到的交互式表单页面,其源代码如下:
<html>
<head><title>留言板</title></head>
<body>
<center><h2>请留下您的建议</h2>
<Form method ="post" action ="Guestbook.asp">
您的名字:<input type =text name="Name" size=33><br>
您的Email:<input type =text name="email" size=32><br>
主题:<input TYPE="TEXT" NAME="Subject" SIZE="36"><br>
留言内容: <br><textarea name ="Memo" COLS=60 ROWS=10></textarea><p>
<input TYPE="Submit" NAME="SEND" VALUE="提交留言">
<input TYPE="RESET" VALUE="清除重写">
<p>
<a HREF="databook.asp">浏览留言</a>
</form></center> </body></html>
在databook.htm文档中存储的是各位来宾的留言,特殊之处是在文件中要使用一个定位字符串“<!----->”将文件的开始部分和具体的客户留言部分分开。ASP程序将在“<!----->”所在的位置之后插入客户的留言。
databook.htm的源文件为:
<html><head><title>看留言</title></head>
<body text="#00000" vlink="#990099" link="#333399">
<center><h1>查看留言</h1></font></center>
<!----->
<留言插入位置>
</body></html>
这样,最新的留言出现在页面的最上端;如果要把最新的留言放在页面的下端,则只需将其中的定位字符串“<!----->”移到客户留言部分和HTML文件结尾部分之间的位置就行了。
需注意的是:<!----->字符串一定要单独占一行。
Guestbook.asp文件:
<%
' 读取各输入框的数据
Name = Request("Name")
Email = Request("Email")
Subject = Request("Subject")
Memo = Request("Memo")
' 检查各输入框是否输入有数据
If Name = "" Or Memo = "" Then
Response.Write "输入框不能为空白!"
Response.End '不再处理以下的程序
End If
' 第一行包含"姓名"与"Email"
Line1 = "留言人:" & Name
Line1 = Line1 & String(5, " ") ' 插入5个汉字空格
Email = "<A HREF=mailto:" & Email & ">" & Email & "</A>"
Line1 = Line1 & "Email(Viii)" & Email & "<BR>"
' 第二行
Line2 = "主 题:" & Subject & "<BR>"
' 第三行为"留言",先将留言中的换行符vbCrLf 换成<BR>
Memo = Replace( Memo, vbCrLf, "<BR>")
' 为了显示不同的背景颜色,采用表格输出
Line3 = "<TABLE BORDER=0 BGCOLOR=#00FFFF><TR><TD>"
Line3 = Line3 & Memo & "</TD></TR></TABLE>"
' 第四行为留言"时间"
Line4 = "时 间:" & Now
On Error Resume Next ' 忽略所有的错误
' 建立 FileSystemObject对象
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Application.Lock
' 取得databook.html及databookold.html的完整路径
FilePath = Server.MapPath("databook.html")
OldFilePath = Server.MapPath("databookold.html")
' 将databook.html更名为databookold.html
fso.MoveFile FilePath, OldFilePath
' 打开databookold.html
Set fin = fso.OpenTextFile(OldFilePath, ,True)
' 建立databook.html
Set fout = fso.CreateTextFile(FilePath)
' 将留言簿中字符串"<!----->"前面的内容写入文件
Do
str=fin.readline
fout.WriteLine str
Loop While str <> "<!----->"
' 写入访问者留言
fout.WriteLine Line1
fout.WriteLine Line2
fout.WriteLine Line3
fout.WriteLine Line4
fout.WriteLine "<HR>"
' 将留言簿中以前的留言内容写入databook.html文件
do while fin.atendofstream=false
str=fin.readline
fout.WriteLine str
loop
' 关闭databookold.html
fin.Close
' 删除databookold.html
fso.DeleteFile OldFilePath, True
Application.UnLock
' 将网页导至"浏览留言"的网页databook.asp
Response.Redirect "databook.asp"
%>
databook.asp文件:显示留言内容
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>访问者留言簿</title>
</head>
<body TEXT="#000000" BGCOLOR="#FFFFFF" BACKGROUND="b01.jpg">
<h2 ALIGN="CENTER">留言簿</h2>
<!--#include file="databook.html"-->
<hr WIDTH="100%">
<a HREF="guestform.html">
<p align="center">返回留言表单</a></p>
</body>
</html>