用ASP设计一个留言薄

网页教程
2010-11-08 09:37:13 文/施耀
首先,我们在做留言薄之前,先做出一个输入屏的界面效果,也就是生成留言部输入屏幕的htmL页,然后在这些htmL源代码中加入ASP脚本,我这里得到的htmL代码如下。
*文件名:book.htm
<html>
<head>
<title>留言薄</title>
</head>
<body bgcolor="#BED9FC" background="images/bg.gif">
<p align="center"><img src="images/gbook.gif" alt="GBook.gif (12142 bytes)" WIDTH="374"
HEIGHT="83"> </p>
<p align="center">[<a href="disp.asp">我要看留言板</a>] [<a href="../index.asp">返回首页</a>]</p>
<form method="POST" action="book.asp">
<input type="hidden" name="task" value="insert"><div align="left"><table>
<tr>
<td align="right">姓名</td>
<td><img src="images/bottom-b.gif" alt="BUTTOM-B.GIF (179 bytes)" WIDTH="16" HEIGHT="16"></td>
<td><input name="name" size="46"></td>
</tr>
<tr>
<td align="right">性别</td>
<td><img src="images/bottom-g.gif" alt="BUTTOM-G.GIF (179 bytes)" WIDTH="16" HEIGHT="16"></td>
<td><input name="sex" size="46"></td>
</tr>
<tr>
<td align="right">来自</td>
<td><img src="images/bottom-b.gif" alt="BUTTOM-B.GIF (179 bytes)" WIDTH="16" HEIGHT="16"></td>
<td><input name="from" size="46"></td>
</tr>
<tr>
<td align="right">主页URL</td>
<td><img src="images/homepage.gif" alt="HomePage.gif (1232 bytes)" WIDTH="30" HEIGHT="30"></td>
<td><input name="url" size="46"></td>
</tr>
<tr>
<td align="right">
E-mail</td>
<td><img src="images/email.gif" alt="Email.gif (1197 bytes)" WIDTH="30" HEIGHT="30"></td>
<td><input name="email" size="46"></td>
</tr>
<tr>
<td align="right">留言</td>
<td colspan="2"><textarea wrap="off" name="comments" cols="49" rows="9"></textarea></td>
</tr>
<tr>
<td> </td>
<td colspan="2"><dl>
<dd align="center"> <input type="submit" value="我写好了">
<input type="reset" value="重新再写"></dd>
</dl>
</td>
</tr>
</table>
</div>
</form>
<p align="center"> </p>
</body>
</html>
您可以按这里看一下这个界面的效果(需要强调一点,这些htmL代码还是完全没有功能的)你可以把它保存为book.htm,然后用FRONTPAGE98来打开它,打开后,可以查看网页中的那个输入FORM的属性,在这个留言薄中。我们使用两个文件来处理,一个是book.asp,另一个是disp.asp,前者是一个输入界面,后者是一个显示界面,用于显示留言信息。
现在说说book.htm,让大家了解一下其中的那个输入FORM的作用,它的action对象是本身,book.asp(等一会儿需要把book.htm改名为book.asp)这个文件,也就是说。表单提交后,由本身来作处理。在这个FORM中,有几个文本输入框,它们分别是name,sex,from,url,email,以及多行文本输入框comments。
现在把book.htm改名为book.asp,往文件中添加ASP代码。如下:(单引号表示ASP的注析,编译器是不处理的。
*book.asp
<% @language="vbscript" %>
<%
‘'判断请求方式,当客户端请求文件时,比如直接输入网址:http://active.网址未加载/index.htm这样,就会产生一个GET的请求信息。而提交表单时(表单的方式设为POST),就会产生POST的请求方式,现在判断book.asp这个文件是用户用浏览器打开页面,还是用户提交数据这个动作,以便进行程序处理。
if Request.ServerVariables("REQUEST_METHOD")="POST" then
‘这里判断出是由用户提交表单而调入入的页面,因此进行登记留言处理。
‘创建一个文件组件的服务器实例
set fsFilesys=CreateObject("Scripting.FileSystemObject")
‘打开文本文件server.mappath("/")是返回服务器发行目录的真实路径,也就是比如说:c:\Inetpub\wwwroot这个路径,然后"/realchat/book/book.txt"就是相对于这个路径基础上的路径。
set myText=fsFilesys.OpenTextFile(Server.MapPath("/")&"/realchat/book/book.txt")
‘把文本文件的所有内容读出,保存在Temp这个变量中。
Temp=myText.Readall
myText.Close
‘是否需要添加内容
if Request("task")="insert" Then
‘取得表单的各项的值
Tname=request.form("name")
Tsex=request.form("sex")
Temail=request.form("email")
turl=request.form("url")
Tfrom=request.form("from")
Tcomments=request.form("comments")
Ttime="#&@"&time
if Len(Tcomments)<2 Then
%>
<font size="4" color="red">
<p align="center">对不起!你还未留言。<a href="book.asp">返回</a></font> <%
else
if Lcase(Left(Turl,7))<>"http://" Then
Turl="http://"&Turl
End if
Turl=Lcase(Turl)
‘重新创建数据文件,把原来的覆盖掉。
set myText=fsFilesys.CreateTextFile(Server.MapPath("/")&"/realchat/book/book.txt")
myText.WriteLine(Tname)
myText.WriteLine(Tsex)
myText.WriteLine(Temail)
myText.WriteLine(Turl)
myText.WriteLine(Tfrom)
myText.WriteLine(Tcomments)
myText.writeLine(Ttime)
myText.WriteLine(date)
myText.writeLine(Temp)
myText.Close
%>
<script Language="javascript">
document.write("<h1>恭喜!您的留言已顺利提交,请按<a href='disp.asp'>这里</a>查看")
</script>
<%
end if
‘至此,留言已保存入文件book.txt中
End if
else
‘第一次进入输入屏幕,因此显示htmL文件内容。
%>
<html>
<head>
<title>留言薄</title>
<% colorbg="#BED9FC" %>
</head>
<body bgcolor="<% =colorbg %>" background="images/bg.gif">
<p align="center"><img src="images/gbook.gif" alt="GBook.gif (12142 bytes)" WIDTH="374"
HEIGHT="83"> </p>
<p align="center">[<a href="disp.asp">我要看留言板</a>] [<a href="../index.asp">返回首页</a>]</p>
<form method="POST" action="book.asp">
<input type="hidden" name="task" value="insert"><div align="left"><table>
<tr>
<td align="right">姓名</td>
<td><img src="images/bottom-b.gif" alt="BUTTOM-B.GIF (179 bytes)" WIDTH="16" HEIGHT="16"></td>
<td><input name="name" size="46"></td>
</tr>
<tr>
<td align="right">性别</td>
<td><img src="images/bottom-g.gif" alt="BUTTOM-G.GIF (179 bytes)" WIDTH="16" HEIGHT="16"></td>
<td><input name="sex" size="46"></td>
</tr>
<tr>
<td align="right">来自</td>
<td><img src="images/bottom-b.gif" alt="BUTTOM-B.GIF (179 bytes)" WIDTH="16" HEIGHT="16"></td>
<td><input name="from" size="46"></td>
</tr>
<tr>
<td align="right">主页URL</td>
<td><img src="images/homepage.gif" alt="HomePage.gif (1232 bytes)" WIDTH="30" HEIGHT="30"></td>
<td><input name="url" size="46"></td>
</tr>
<tr>
<td align="right">
E-mail</td>
<td><img src="images/email.gif" alt="Email.gif (1197 bytes)" WIDTH="30" HEIGHT="30"></td>
<td><input name="email" size="46"></td>
</tr>
<tr>
<td align="right">留言</td>
<td colspan="2"><textarea wrap="off" name="comments" cols="49" rows="9"></textarea></td>
</tr>
<tr>
<td> </td>
<td colspan="2"><dl>
<dd align="center"> <input type="submit" value="我写好了">
<input type="reset" value="重新再写"></dd>
</dl>
</td>
</tr>
</table>
</div>
</form>
<p align="center"> </p>
</body>
</html>
<%
end if
%>
现在到disp.asp这个文件,这个文件主要完成从book.txt中提取文件内容,然后重新生成htmL代码以显示出留言内容。
代码如下:
<% @language="vbscript" %>
<html>
<head>
<title>留言薄</title>
</head>
<body background="images/back.gif">
<p align="center"><img src="images/gbook.gif" alt="gbook.gif (12142 bytes)" WIDTH="374" HEIGHT="83"><%
‘打开数据文件
set fsFilesys=CreateObject("Scripting.FileSystemObject")
set myText=fsFilesys.OpenTextFile(Server.MapPath("/")&"/realchat/book/book.txt")
Tname=myText.ReadLine
%> </p>
<p align="center">[<font color="#00FFFF" size="4"><a href="book.asp">我要写留言</a></font>][<font color="#00FFFF"><a href="../index.asp">返回首页</a></font>]</p>
<table width="600">
<%
do while Tname<>"Line1"
‘逐行读出内容(Line1)是文件结束标志
Tsex=myText.ReadLine
Temail=myText.ReadLine
Turl=myText.ReadLine
Tfrom=myText.ReadLine
%>
<tr>
<td><hr>
</td>
</tr>
<tr>
‘<%=表达式%>是向客户端输出结果
<th colspan="2" align="left">姓 名:<% =Tname %><br>
性 别:<% =Tsex %><br>
E—mail:<a href="mailto:<% =Temail %>"><% =Temail %></a><br>
主页URL:<a href="<% =Turl %>" target="_blank"><% =turl %></a><br>
来 自:<% =Tfrom %></th>
</tr>
<tr>
<th align="left" bgcolor="<% =colorbg %>"><font color="red">留 言:</font></th>
<th align="left" bgcolor="<% =colorbg %>"><%
Tcomments=myText.ReadLine
do while InStr(Tcomments,"#&@")=0
%>
<% =Tcomments %>
<br>
<%
Tcomments=myText.ReadLine
loop
Ttime=Mid(Tcomments,4)
Tdate=myText.ReadLine
%> </th>
</tr>
<tr>
<th colspan="2" align="left">时 间:<% =Ttime %> <br>
日 期:<% =Tdate %></th>
</tr>
<tr>
<td><br>
<%
tname=myText.ReadLine
loop
myText.Close
%> </td>
</tr>
</table>
<p><br>
<br>
</p>
</body>
</html>
好了,仔细地把源文件DOWN下去,自己不断修改,不断测试一下,这样对学习很有好处,看看book.txt的内容。
*book.txt的内容,里面有一条留言
小Hu
男
realplay@网址未加载
http://realplay.网址未加载
佛山
热烈兴祝“泰信心动聊天室虚拟社区”进入测试使用阶断,衷心感谢些您的到来,在测试过程中有什么问题或好的建议,请告诉我。
yesky诚邀您的加盟参与!
webmaster
wak@21:51:15
99-7-13
Line1
这个留言本很简单,但我觉得很有亲切感,比那些比较“现代化”的比如说心动留言薄这类的风格,朴素得多。
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)

.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)

.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)


.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)

.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)

.jpg)





