asp学生论坛bbs设计毕业论文(开题报告+源代码) 第13页
If ShowUserid="" Then
UPSQL=UPSQL + " Where Username='"&UserName&"'"
SQL=SQL + " Where Username='"&UserName&"'"
Else
UPSQL=UPSQL + " Where Userid="&ShowUserid
SQL=SQL + " Where Userid="&ShowUserid
End If
Set Rs=Mybbs.Execute(Sql)
If Rs.Eof And Rs.Bof Then
Mybbs.AddErrCode(32)
Exit Sub
Else
Mybbs.Execute(UPSQL)
'UserInfo=Rs.GetRows(1)
SQL=Rs.GetString(,1, "@@@", "", "")
Rs.Close:Set Rs=Nothing
End if
UserInfo=Split(Sql,"@@@")
ShowUserid=Clng(UserInfo(0))
UserName=UserInfo(1)
前面的SQL语句和用户修改信息很相似,实际上就是修改用户信息的另外一种方法。Rs.GetString(,1, "@@@", "", "")这个方法是将Recordset作为字符串返回,Getstring可以有4个参数,这里只用到两个。因为浏览用户只需要从数据库中读取一条记录,所以这里的第二个参数为1,@@@是用来分割记录集字符串。使用这个方法会使读取记录的速度比较快,从而提高ASP的效率。
4.2 版面与公共信息模块
4.2.1 版面浏览
版面浏览是指版面的列表,版面有层次之分,一般以两层的方式显示。在一级版面下,依次显示子版面。可以使用几个函数来完成,如程序4-5。
程序4-5 版面浏览函数
‘函数一(获得某版面下的子版面):
Public Function ReloadBoardInfo(lBoardID)
If lBoardID=0 Then Exit Function
Dim Rs
Set Rs=Execute("select BoardID,BoardType,ParentID,ParentStr,Depth,RootID,Child,readme,
BoardMaster,PostNum,TopicNum,indexIMG,todayNum,boarduser,LastPost,Sid,Board_Setting,
Board_Ads,Board_user,IsGroupSetting,BoardTopStr,BoardID As TempStr,BoardID As TempStr1,
BoardID As TempStr2,BoardID As TempStr3,cid,BoardID As TempStr4 from Dv_board where
BoardID="&lBoardID)
If Not Rs.Eof Then
Name = "BoardInfo_" & lBoardID
Value = Rs.GetRows(1)
Else
'自动修正所有版面的boards数
Call ReloadAllBoardInfo()
'Response.Redirect "index.asp"
End If
Rs.Close
Set Rs = Nothing
End Function
‘函数二(自动修正所有版面的boards数)
Public Sub ReloadAllBoardInfo()
Dim Rs,Boards
Set Rs=Execute("Select BoardID From Dv_Board Order By RootID,Orders")
If Not Rs.Eof Then
Boards=Rs.GetString(,-1, "",",","")
Boards=Left(Boards,Len(Boards)-1)
End If
Rs.close:Set Rs=Nothing
Execute("Update dv_Setup Set Forum_Boards='"&Boards&"'")
ReloadSetupCache Boards,27
End Sub
Value = Rs.GetRows(1)一句用到了GetRows()方法,其作用是将Recordset对象的多个记录检索到数组中。GetRows可以带3个参数,这里只用到了第一个参数。在调用了GetRows后,下一个未读取的记录就成了当前记录。如果没有其他记录,则EOF的属性将被设置成True。
4.2.2 公共信息模块
公共信息有两类,一类是可以在版面的顶端可以看到的论坛信息,一类是由用户发起的在各个版面的信息,他的功能类似于广播,称之为小字报。一般公告具有时效性,要求只有管理员才能发布,而版主可以在其负责的版区发布。小字报则可有各个会员发布,且版主可以管理这些小字报。发布公告和帖子的原理是一样的,而只需要识别用户的身份来判断是否有发布和管理权限。如程序4-6。
程序4-6 判断用户身份程序(announcements.asp)
程序一:
Select case UserGroupID
Case 4 Vipuser=True
Case 3 Boardmaster=True
Case 2 Superboardmaster=True
Case 1 Master=True
End Select
程序二:
If Mybbs.Master Then
Mybbs. Boardmaster=True
ElseIf Mybbs. Superboardmaste Then
Mybbs. Boardmaster=True
ElseIF Mybbs.UserGroupID=3 And Not Trim(Mybbs. BoardmasteList)=”” Then
IF InStr(“|”&lcase(Mybbs. BoardmasteList)&”|”,”|”&lcase(Mybbs.Membername)&”|”)>0 Then
Mybbs. Boardmaste=True
End If
End If
注意UserGroupID和Mybbs.Membername两个变量,因为当用户登陆都其登陆信息会写如Cookie,这里面的变量信息就是从Cookie里面获得的。
4.3 帖子模块
一个论坛最重要的是数据,数据部分最重要的只有两个,一个是用户数据,另一个就是帖子数据。而帖子是一个论坛存在的根本,所以非常重要。
4.3.1 发布、修改、删除帖子
对于发布、修改和删除帖子,发布是重点,修改帖子和发布帖子是差不多的,而删除帖子只需要多数据库的帖子ID实行删除操作,相对也比较简单。发布帖子的功能很多,使用心情图片和表情图片,正文部分可以自己定义喜欢的格式,还有使用各种UBB代码。
帖子的正文部分可以通过一些代码插图图片、Flash等各种东西,而且可以自定义字体、格式、颜色等,让帖子看起来更丰富多彩。其实这里并没有提供HTML功能,而是用到了UBB码。UBB代码是HTML的一个变种,是Ultimate Bulletin Board(国外的一个BBS程序)采用的一种特殊的TAG。为了避免用户无意或有意的使用HTML代码对论坛进行攻击,一般论坛是禁止HTML代码的,但会开放一些自定义的Tag标签,类似与HTML中的Tag,这样就既可以使用一些等同于HTML代码的功能,又避免了论坛受到恶意的攻击。一般我们自定义的这些Tag叫做UBB代码。
<< 上一页 [11] [12] [13] [14] [15] [16] [17] [18] 下一页