您的位置:首页网页设计ASP实例 → 论坛中有新贴子功能的实现

论坛中有新贴子功能的实现

时间:2004/11/7 3:00:00来源:本站整理作者:蓝点我要评论(0)

这是近来用asp改写ubb论坛的体会,不当之处请多多指正可参照chinaasp的网页俱乐部(就是个ubb风格的论坛)ubb论坛有个非常好的特点,就是会标志自您上次访问以来新增的贴子,主要在两个地方:讨论区列表和某一讨论区的帖子列表。通常所用的图形为on.gif,off.gif(讨论区列表),closed.gif,closedb.gif(某一讨论区的贴子列表),其中on.gif,closedb.

gif表示自上次访问后新增或修改过的贴子。  



实现:  

  通过综合使用Session和Cookie变量来实现  

  1、Session变量:firstin, 标识是否第一次进入该页面,还是通过刷新进入该页面  

  2、Cookie变量:这里作了简化,取消了原正式版ubb中的sessionlogin/lastLogin两个Cookie只使用sessionloginDT/lastLoginDT两个Cookie。  

  sessionLoginDT-保存上次登录的时间  

  lastLoginDT-保存本次登录的时间  



原理:  

  取上次登录时间为本此会话时间,并将此时间同讨论区最后一个贴子的时间或某一讨论区各主题的最后时间比较,根据实际情况选择适当的图形,如:  



if rsList.Fields("status")="close" then

   ''主题关闭

   Response.Write "< tr >< td bgColor=#f7f7f7 >< img src=images/lock.gif >" & _

      "< a href=newsdetail.asp?id=" & rsList.Fields("postid") & _

      ">" & rsList.Fields("Subject") & "< /a > < /td >"

else

   ''Lastly为主题的post时间

   if rsList.Fields("Lastly")>sessionLoginDT then

      Response.Write "< tr >< td bgColor=#f7f7f7 >< img src=images/closedb.gif >" & _

         "< a href=newsdetail.asp?id=" & rsList.Fields("postid") &_

         ">" & rsList.Fields("Subject") & "< /a > < /td >"

    else

      Response.Write "< tr >< td bgColor=#f7f7f7 >< img src=images/closed.gif >" &_

         "< a href=newsdetail.asp?id=" & rsList.Fields("postid") &_

         ">" & rsList.Fields("Subject") & "< /a > < /td >"

    end if

end if



页面:讨论区列表(default.asp)  

代码片段:



if isempty(Session("FirstIn")) then

   ''第一次进入或不允许使用 Cookie

   ''取上次访问时间并赋值给 sessionLoginDT

   if not isempty(request.cookies("lastLoginDT")) then

      sessionLoginDT=request.cookies("lastLoginDT")

      if not isdate(sessionLogindt) then

         sessionlogindt=formatdatetime(now)

      else

         sessionLoginDT=cdate(sessionLoginDT)

      end if

   else

      sessionLoginDT=formatdatetime(now)

   end if

   ''写 cookies

   ''写 sessionLoginDT

   response.cookies("sessionLoginDT")=sessionLoginDT

   response.cookies("sessionLoginDT").expires=date+365

   response.cookies("lastLoginDT")=lastLoginDT

   response.cookies("lastloginDT").expires=date+365

   Session("FirstIn")="yes"

else

   ''刷新,同时说明允许 cookie

   Session("FirstIn")="no"

   ''读时间

   if not isempty(request.cookies("SessionLoginDT")) then

      sessionLoginDT=request.cookies("SessionLoginDT")

      ''sessionlogindt 不合法,一般不存在此问题

      if not isdate(sessionLogindt) then

         sessionlogindt=formatdatetime(now)

      else

         sessionLoginDT=cdate(sessionLoginDT)

      end if

   else

      ''没有 sessionlogindt cookie,一般不存在此问题

      sessionLoginDT=formatdatetime(now)

      ''写 sessionLoginDT

      response.cookies("sessionLoginDT")=sessionLoginDT

      response.cookies("sessionLoginDT").expires=date+365

   end if

end if



页面:某讨论区贴子列表:(List.asp)  

代码举例:



dim sessionLoginDT

if not isempty(request.cookies("sessionLoginDT")) then

   sessionLoginDT=request.cookies("sessionLoginDT")

   if not isdate(sessionLoginDT) then

      sessionlogindt=formatdatetime(now)

   else

      sessionLoginDT=cdate(sessionLoginDT)

   end if

else

   ''不存在此cookie,一般不存在此问题

   sessionLoginDT=formatdatetime(now)

   ''写Cookie

   response.cookies("sessionLoginDT")=sessionLoginDT

   response.cookies("sessionLoginDT").expires=date+365

end if


相关阅读 Mac和Windows哪个好 windows和mac os对比介绍Win10预览版怎么升级 Win10预览版升级方法厂商不再预装Win7或8.1系统,驱动人生帮您快速升级Mac移动硬盘安装win8 Mac将win装在移动硬盘使用教程windows10xboxone串流简单教程Windows Hello怎么用 Windows Hello使用设置教程win10怎么关闭自动更新 win10如何关闭自动更新Mac系统如何远程桌面到Windows系统

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 迅雷新手完全入门手册 asp下面javascript上传图片限制格式大小方法告诉大家网页弹出窗口应用总结ASP常见错误类型大全asp常见错误分析和解决办法

人气排行 总是弹出visual studio 实时调试器 三种解决SQLSERVER存储过程及调用详解Asp获取真实IP地址ASP中连接Mssql的几种方法一个简单好用的UBB编辑器(含代码)如何用Split将字符串转换为数组并获取数组下ASP防止表单重复提交的办法告诉你免费的简单聊天室源代码