当前位置: 首页 > 图文教程 > 网络编程 > ASP > 用ASP打造一个小型的网页BBS系统

ASP
提高SQL的执行效率的ASP的五种做法
asp的offset的一个go to page
asp中command的在单条记录时,有些字段显示为空的问题
asp,php一句话木马整理方便查找木马
asp 合并记录集并删除的sql语句
asp下循环一行多少个
asp循环行数输出函数
asp access重新开始编号
ASP生成数字相加求和的BMP图片验证码
静态页面利用JS读取cookies记住用户信息
比较详细的Asp伪静态化方法及Asp静态化探讨
asp Response.flush 实时显示进度
Asp高级故障解决以及相关代码
asp智能脏话过滤系统v1.0
ASP文件中的安全问题
Access数据库中“所有记录中均未找到搜索关键字”的解决方法
asp两组字符串数据比较合并相同数据
asp MYSQL出现问号乱码的解决方法
asp文章中随机插入网站版权文字的实现代码
ASP利用XMLHTTP实现表单提交以及cookies的发送的代码

用ASP打造一个小型的网页BBS系统


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-23   浏览: 87 ::
收藏到网摘: n/a

传统的网页BBS大多是采用CGI模式实现的,它的实现要求编程者既要掌握编程语言如Perl或C等,又要了解关于CGI模式的各项技术内容,因此要制作自己的网页BBS确实困难不小。ASP(Active Server Pages 动态服务器主页)的出现,使我们眼前一亮,能不能利用ASP实现网页BBS呢?回答当然是肯定的。ASP的诱人之处就在于它提供了一种简单易学的脚本,并带有许多内置的对象,从而提供了一条简捷的编程之路。

该BBS 主要由用户注册(浏览器端)、用户注册(服务器端)、加帖子(浏览器端)、加帖子(服务器端)、帖子具体内容的显示和回复以及所有帖子的显示六个部分组成,其中用户信息存放在数据库author.mdb中,帖子存放在数据库bbs.mdb中。它们均为ACCESS数据库,结构分别如表1、表2所示。

表1 author.mdb

字段名 数据类型 长度 说明
Authname 文本 24 用户名
Password 文本 10 密码

表2 bbs.mdb

字段名  数据类型  长度  说明
ID 文本   4  帖子的编号
Authname  文本  24  用户名
Subject 文本 80 主题
Content 备注   内容
Adddate 日期/时间 加贴的日期
Visitnum  数字  长整型  访问人数
Answernum  文本 4 所回复帖子的编号
(缺省为本身的编号)
Addtime  日期/时间 加贴的时间
Topnum 文本  4 第一层回复帖子的编号

具体实现方法如下所示,其中asp文件和数据库存放在“/hosp/asp"中,其它htm
文件存放在“/hosp"文件中,img文件存放在“/hosp/images"。

1、 用户注册(浏览器端)login.htm:由用户输入相关信息,通过表单传送到服
务器。

以下是引用片段:
<html> 
<head><title> register a new user</title><head> 
<body> 
<FORM METHOD="POST" ACTION="/hosp/asp/register.asp"><P> 
<H2>为了标识方便,请您注册一个用户名称</H2> 
用户:<INPUT TYPE="TEXT" name="name" SIZE="24"><P> 
密码:<INPUT TYPE="password" name="password" SIZE="24"><P> 
<INPUT TYPE=SUBMIT VALUE="注 册"> 
<INPUT TYPE=RESET VALUE="清 除"> 
<a href="/hosp/asp/dispbbs.asp">返回论坛</a><P> 
</body> 
</html>

2、 用户注册(服务器端)Register.asp:利用REQUEST.FORM("表单栏位名")接收表单信息,采用ADO技术与数据库author.mdb连接,并将表单信息存入author.mdb中。

以下是引用片段:
<html> 
<head><title> 存用户信息 </title></head> 
<body> 
<!-- 取客户浏览器输入的用户名和密码 --> 
<% name=REQUEST.FORM("name") 
code=REQUEST.FORM("password") 
<!-- 与author.mdb连接 --> 
Set Connection=Server.CreateObject("ADODB.Connection") 
Connection.Open "author" 
Set RS=Connection.Execute("SELECT * FROM author") 
<!-- 如果该用户名已存在,请重输,否则存入数据库 --> 
If Not RS.EOF Then %> 
该用户名已被注册,请您重新<a href="/hosp/login.htm">注册</a>新用户名! 
<% Else 
Connection.Execute("INSERT INTO author(authname,password) Values('" &name& "','" &code& "')") 
RS.Close 
Connection.Close %> 
<CENTER><B><% =name %></B> 您已注册成功!<P> 
<a href="/hosp/asp/dispbbs.asp">返回论坛</a></CENTER> 
<% End If %> 
</body> 
</html> 

3、 加帖子(浏览器端)bbs_add.htm:由用户输入待加入帖子的相关信息,并传到服务器。

以下是引用片段:
<html> 
<head><title> a sample form </title></head> 
<body background="/hosp/images/backgrnd.gif"> 
<FORM METHOD="POST" ACTION="/hosp/asp/bbs.asp"><P> 
姓名: <INPUT NAME="name" SIZE="28"> 密码: <INPUT TYPE="password" NAME="code" SIZE="28"><P> 
主题:<INPUT NAME="subject" SIZE="66"><P> 
内容:<P> 
<TEXTAREA NAME="content" ROWS=20 COLS=72></TEXTAREA><P> 
<CENTER><INPUT TYPE=SUBMIT VALUE="发布信息"> 
<INPUT TYPE=RESET VALUE="清除信息"></CENTER> 
</FORM> 
</body> 
</html> 

4、 加帖子(服务器端)bbs.asp:接收帖子内容,并存入bbs.mdb中。

以下是引用片段:
<html> 
<head><title>bbs.asp</title></head> 
<body> 
<% name=REQUEST.FORM("name") 
code=REQUEST.FORM("code") 
subject=REQUEST.FORM("subject") 
content=REQUEST.FORM("content") 
curdate=Date 
curtime=Time 
<!-- 与author.mdb连接 --> 
Set Connection = Server.CreateObject("ADODB.Connection") 
Connection.Open "author" 
Set RS = Connection.Execute("SELECT * FROM author WHERE authname='" &name& "' AND password='" &code& "'") 
<!-- 判断用户名与密码是否匹配 --> 
If Not RS.EOF Then 
<!-- 打开数据文件,该文件存放帖子的编号,每加一个帖子,编号加1 --> 
Set FileObject = Server.CreateObject("Scripting.FileSystemObject") 
Set InStream = FileObject.OpenTextFile ("c:inetpubwwwroothospaspdata.id", 1, False, False) 
number = Cstr(InStream.Readline+1) 
Set OutStream = FileObject.CreateTextFile ("c:inetpubwwwroothospaspdata.id", True, False) 
OutStream.WriteLine number 
If Request.QueryString("ID")="" Then 
manswernum=number 
Else 
manswernum=Request.QueryString("ID") 
End If 
If Request.QueryString("topnum")="" Then 
mtopnum=number 
Else 
mtopnum=Request.QueryString("topnum") 
End If 
Set OutStream = Nothing 
<!-- 与bbs.mdb连接,将帖子信息存入数据库中 --> 
Set Connbbs = Server.CreateObject("ADODB.Connection") 
Connbbs.Open "bbs" 
Connbbs.Execute("INSERT INTO bbs(ID,authname,subject,content,adddate,addtime,answernum,topnum,visitnum) Values('" &number& "','" 
&name& "','" &subject& "','" &content& "','" &curdate& "','" &curtime& "','" &manswernum& "','" &mtopnum& "',0)") 
Connbbs.Close %> 
<% =curdate & " " %><% =curtime & " 添加贴子 " %> 
<a href="http://nt-server/hosp/asp/dispbbs.asp">返回论坛</a><P> 
姓名:<% =name %><P> 
主题:<% =subject %><P> 
内容:<% =content %><P> 
<% Else %> 
您的用户名或密码出错,请您重输! 
<% End If 
RS.Close 
Connection.Close %> 
</body> 
</html> 

5、帖子具体内容的显示和回复 detail.asp

以下是引用片段:
<html>
<head><title>bbs.asp</title></head>
<body background="/hosp/images/backgrnd.gif">
<% idnum=Request.QueryString("ID")
Set Connection=Server.CreateObject("ADODB.Connection")
Connection.Open "bbs"
Set RS=Connection.Execute("SELECT * FROM bbs WHERE ID='" &idnum& "'") %>
姓名:<% =RS(1) %><p>
主题:<% =RS(2) %><p>
内容:<% =RS(3) %><p>
<! --形成回复表单 --> 
<% resub="Re:" & RS(2) 
mtopnum=RS(8) 
RS.Close 
Connection.Close %> 
<FORM METHOD="POST" ACTION="/hosp/asp/bbs.asp?ID=<% =idnum %>&topnum=<% =mtopnum %>"><P> 
姓名: <INPUT NAME="name" SIZE="28"> 密码: <INPUT TYPE="password" NAME="code" SIZE="28"><P> 
主题:<INPUT NAME="subject" SIZE="66" VALUE="<% =resub %>"><P> 
内容:<P> 
<TEXTAREA NAME="content" ROWS=20 COLS=72></TEXTAREA><P> 
<CENTER><INPUT TYPE=SUBMIT VALUE="信息回复"> 
<INPUT TYPE=RESET VALUE="清除信息"></CENTER> 
</FORM> 
<a href="http://nt-server/hosp/asp/dispbbs.asp">返回论坛</a> 
</body> 
</html> 

6、所有帖子的显示 Dispbbs.asp:列出所有的帖子的主题、作者、时间、访问人数等信息。

以下是引用片段:
<html> 
<head><title>dispbbs.asp</title></head> 
<body background="/hosp/images/backgrnd.gif"> 
<CENTER><IMG SRC="/hosp/images/luntan.gif" BORDER=0></CENTER><P> 
<CENTER><A HREF="/hosp/login.htm"><IMG SRC="/hosp/images/zhuce.gif" BORDER=0></A> 
<A HREF="/hosp/bbs_add.htm"><IMG SRC="/hosp/images/jiatz.gif" BORDER=0></A> 
<A HREF="/hosp/default.htm"><IMG SRC="/hosp/images/return.gif" BORDER=0></A></CENTER><P> 
<% Set Connection=Server.CreateObject("ADODB.Connection") 
Connection.Open "bbs" 
Set RS=Connection.Execute("SELECT * FROM bbs WHERE ID=answernum ORDER BY ID DESC") 
Set Conn=Server.CreateObject("ADODB.Connection") 
Conn.Open "bbs" 
Set RSNEXT=Conn.Execute("SELECT * FROM bbs") 
Do While not RS.EOF %> 
<% =RS(0) %> <a href="/hosp/asp/detail.asp?ID=<% =RS(0) %>"><% =RS(2) %></a> -<FONT SIZE="4"><B><% =RS(1) %></B></FONT> <% 
=RS(4) &" " %><% =RS(7) %>(<% =RS(5) %>)<P> 
<% Set RSNEXT=Conn.Execute("SELECT * FROM bbs WHERE topnum<>ID AND opnum='" &RS(0)& "' ORDER BY ID ASC") 
Do While Not RSNEXT.EOF %> 
<% =RSNEXT(0) %> <a href="/hosp/asp/detail.asp?ID=<% =RSNEXT(0) %>">Re<% RSNEXT(6) %>:<% =RSNEXT(2) %></a> 
-<FONT SIZE="4"><B><% =RSNEXT(1) %></B></FONT> <% =RSNEXT(4) &" " %><% =RSNEXT(7) %>(<% =RSNEXT(5) %>)<P> 
<% RSNEXT.MoveNext 
Loop 
RS.MoveNext 
Loop 
RSNEXT.Close 
Conn.Close 
RS.Close 
Connection.Close %> 
</body> 
</html> 

上述程序在Win NT4.0和IIS3.0上实现通过。