给日志评论增加回复功能for pjblog (4/5凌晨更新,修改越权提交的BUG,危险)

作者:戒聊。
发布网址:http://www.muzili.com
12/13增加后台管理评论回复功能。详情请见第三点。
发布出来才发现好像已经有这个了?
12/22增加回复显示日期功能,以及修改回复功能(已经有回复时再次点击回复为修改),请按照1.1,1.3,1.4,1.5,2,3步重新修改,其中1.4,1.5为新加步骤,另外重新下载附件并执行.
1/19更改后台错误,按照第4点修改.(最近店准备开张,比较忙,所以这么多朋友反应的后台出错,收到MOUSE的邮件,才仔细看了看,原来是我写漏了一步修改.SORRY.),关于后台回复时间会全部变成一样这个问题,等我空了再弄哈.
2/8更新回复时间显示错误.请注意第2步中的***   ***中间的代码.完全第一次更新请直接去掉这行两端的***,已经修改过的请直接重新更新这一行就OK了.

2/9更新后台回复留言后所有之前的回复时间全部被更改,这个好像我没做过修改,是不是PJ之前本身就有的BUG?哈哈。
  更新后台回复评论后时间无显示的BUG。经测试时间正常。
  修改方法请注意:请认真执行第五步,小心,别搞错了。。

4/5凌晨修改越权提交的危险BUG,谢谢RISON提醒。修改方法请增加1.6步及第2步中红色文字部分。

自从此功能发布已来,收到很多人的留言,修改不成功。主要是修改步骤太多,加上可能是我表达不清楚,呵呵,仔细看清每一步。出现什么未结束,或者超出范围之类的提示,这些都是由于修改错误,请大家多注意点我的说明,小心修改一点能成功。呵呵。实在不行请直接发送错误文件到我的QQ邮箱:645962@QQ.COM,我会在二天之内帮忙修改完成。


1。1打开class\cls_article.asp,找到
Sub ShowComm(LogID,comDesc,DisComment)
,在下面插入
      dim action,commID,CommReplyContent
      action = trim(Request.QueryString("action"))
找到Pcount=0这行下面的SQL语句,即SQL="****",小心修改。
如果已经做了我发布的《评论留言加上邮箱和网址(可防垃圾广告)》的朋友请直接将这句SQL语句替换为:
        if action="Reply" then
        commID=request("commID")
       SQL="Select comm_ID,comm_Content,comm_Author,comm_PostTime,comm_DisSM,comm_DisUBB,comm_DisIMG,comm_AutoURL,comm_PostIP,comm_AutoKEY,email,siteurl,comm_Reply,comm_Replytime FROM blog_Comment Where comm_ID="&commID&" UNION ALL Select 0,tb_Intro,tb_Title,tb_PostTime,tb_URL,tb_Site,tb_ID,0,'127.0.0.1',0,0,0,0,0 FROM blog_Trackback Where blog_ID="&LogID&" orDER BY comm_PostTime "&comDesc
        else
       SQL="Select comm_ID,comm_Content,comm_Author,comm_PostTime,comm_DisSM,comm_DisUBB,comm_DisIMG,comm_AutoURL,comm_PostIP,comm_AutoKEY,email,siteurl,comm_Reply,comm_Replytime FROM blog_Comment Where blog_ID="&LogID&" UNION ALL Select 0,tb_Intro,tb_Title,tb_PostTime,tb_URL,tb_Site,tb_ID,0,'127.0.0.1',0,0,0,0,0 FROM blog_Trackback Where blog_ID="&LogID&" orDER BY comm_PostTime "&comDesc
       end if
否则替换为:
        if action="Reply" then
        commID=request("commID")
       SQL="Select comm_ID,comm_Content,comm_Author,comm_PostTime,comm_DisSM,comm_DisUBB,comm_DisIMG,comm_AutoURL,comm_PostIP,comm_AutoKEY,comm_Reply,comm_Replytime FROM blog_Comment Where comm_ID="&commID&" UNION ALL Select 0,tb_Intro,tb_Title,tb_PostTime,tb_URL,tb_Site,tb_ID,0,'127.0.0.1',0,0,0 FROM blog_Trackback Where blog_ID="&LogID&" orDER BY comm_PostTime "&comDesc
        else
       SQL="Select comm_ID,comm_Content,comm_Author,comm_PostTime,comm_DisSM,comm_DisUBB,comm_DisIMG,comm_AutoURL,comm_PostIP,comm_AutoKEY,comm_Reply,comm_Replytime FROM blog_Comment Where blog_ID="&LogID&" UNION ALL Select 0,tb_Intro,tb_Title,tb_PostTime,tb_URL,tb_Site,tb_ID,0,'127.0.0.1',0,0,0 FROM blog_Trackback Where blog_ID="&LogID&" orDER BY comm_PostTime "&comDesc
       end if
1.2找到
<a href=""blogcomm.asp?action=del&commID="&blog_CommID&""" onclick=""if (!window.confirm('是否删除该评论?')) {return false}"">
在之前插入
<a href=""article.asp?action=Reply&commID="&blog_CommID&"&ID="&LogID&"#comm_"&blog_CommID&"""><img src=""Plugins/guestbook/reply.gif"" alt=""回复"" border=""0"" style=""margin-bottom:-3px""/></a>
找到
<div id="MsgHead">
发表评论
修改为:
<%
      if action="Reply" then
          response.write "回复评论"
      else
          response.write "发表评论"
      end if
%>
找到
              <input name="action" type="hidden" value="post"/>
替换为:
<%
      if action="Reply" then
%>
              <input name="action" type="hidden" value="Reply"/>
              <input name="commID" type="hidden" value="<%=blog_CommID%>"/>
<%
      else
%>
              <input name="action" type="hidden" value="post"/>
<%
      end if
%>              
1.3找到:
   <div class="commentcontent" id="commcontent_<%=blog_CommID%>"><%=UBBCode(HtmlEncode(CheckStr(blog_CommContent)),commArr(4,Pcount),blog_commUBB,blog_commIMG,commArr(7,Pcount),commArr(9,Pcount))%></div>
在下面插入(注意:如果没有做过我发布的《评论留言加上邮箱和网址(可防垃圾广告)》,请将下面这段代码中的“12,pcount”改成“10,pcount”,13改成11:
       <%if len(commArr(12,Pcount))>0 then %>
         <div class="commenttop"><img src="images/reply.gif" alt="" border="0" style="margin:0px 3px -3px 0px"/><b><%=blog_master%>回复</b>  <span class="commentinfo">[<%=DateToStr(commArr(13,Pcount),"Y-m-d H:I A")%>]</span></div>
         <div class="commentcontent"><%=UBBCode(HtmlEncode(commArr(12,Pcount)),0,0,0,1,1)%></div>
       <%end if%>
1.4找到
blog_CommID=commArr(0,Pcount)
       blog_CommAuthor=commArr(2,Pcount)
       blog_CommContent=commArr(1,Pcount)
在下面插入(注意里面的12,按实际情况修改,可能为10)
   CommReplyContent=commArr(12,Pcount)
1.5找到
       UBB_TextArea_Height="150px;"
       UBB_Tools_Items="bold,italic,underline"
       UBB_Tools_Items=UBB_Tools_Items&"||image,link,mail,quote,smiley"
在下面插入
      if action="Reply" then
          UBB_Msg_Value=UBBFilter(UnCheckStr(CommReplyContent))
       end if
1.6找到
             if not stat_CommentAdd then
          response.write ("你没有权限发表留言!")
          response.write ("</div></div>")
          exit sub
       end if
在其上或其下插入如下代码:
      if action="Reply" and not stat_Admin then
          response.write ("你没有权限回复留言!")
          response.write ("</div></div>")
          exit sub
      end if
2。打开blogcomm.asp,在最后一个之前插入如下代码:

function replyMsg
  dim post_Message,MsgID,ReInfo,post_logID
  ReInfo=Array("错误信息","","MessageIcon")
  MsgID = CheckStr(Request.form("commID"))
  post_Message=CheckStr(request.form("Message"))
  post_logID=CheckStr(request.form("logID"))
       if not (memName<>empty and stat_Admin) then
             ReInfo(0)="评论回复错误信息"
             ReInfo(1)="你没有权限回复留言<a href=""javascript:history.go(-1)"">单击返回</a>"
             ReInfo(2)="ErrorIcon"
                replyMsg=ReInfo
             exit function

       end if
       If MsgID=Empty then
             ReInfo(0)="评论回复错误信息"
             ReInfo(1)="非法操作<a href=""javascript:history.go(-1)"">单击返回</a>"
             ReInfo(2)="ErrorIcon"
                replyMsg=ReInfo
             exit function

       end if
       If IsInteger(MsgID)=0 then
             ReInfo(0)="评论回复错误信息"
             ReInfo(1)="非法操作<a href=""javascript:history.go(-1)"">单击返回</a>"
             ReInfo(2)="ErrorIcon"
                replyMsg=ReInfo
             exit function

       end if
      ****Conn.ExeCute("update blog_Comment set Comm_reply='"&post_Message&"',Comm_replytime='"&DateToStr(now(),"Y-m-d H:I:S")&"' where comm_ID=" & MsgID)****
     ReInfo(0)="评论回复成功"
     ReInfo(1)="<b>你成功地对该评论进行了回复</b><a href=""article.asp?id="&post_logID&""">单击返回该日志</a>"
     ReInfo(2)="MessageIcon"
replyMsg=ReInfo
end function

找到
<%
else
response.write ("非法操作!!")
在上面插入如下代码:
<%
elseif Request("action")="Reply" then
PostBComm=replyMsg
%>
   <div style="text-align:center;">
    <div id="MsgContent" style="width:300px">
      <div id="MsgHead"><%=PostBComm(0)%></div>
      <div id="MsgBody">
         <div class="<%=PostBComm(2)%>"></div>
         <div class="MessageText"><%=PostBComm(1)%></div>
      </div>
    </div>
  </div>
3。打开ConContent.asp,找到
                        conn.execute("Update blog_Comment SET comm_Content='"&checkStr(Request.form("message_"&doCommID(i)))&"' Where comm_ID="&doCommID(i))
替换为:
                        conn.execute("Update blog_Comment SET comm_Content='"&checkStr(Request.form("message_"&doCommID(i)))&"',comm_Reply='"&checkStr(Request.form("reply_"&doCommID(i)))&"',Comm_replytime='"&now&"' Where comm_ID="&doCommID(i))

找到第二处的(有两处)
                                        <div class="content"><textarea name="message_<%=commArr(0,Pcount)%>" onFocus="focusMe(this)" onBlur="blurMe(this)" onMouseOver="overMe(this)" onMouseOut="outMe(this)"><%=UnCheckStr(commArr(1,Pcount))%></textarea></div>
在下面插入:
                                        <div class="reply"><h5>回复内容:<%if len(trim(commArr(7,Pcount)))<1 or IsNull(commArr(7,Pcount)) then response.write "<span class=""tip"">(无回复留言)</span>"%></h5><textarea name="reply_<%=commArr(0,Pcount)%>" onFocus="focusMe(this)" onBlur="blurMe(this)" onMouseOver="overMe(this)" onMouseOut="outMe(this)" onChange="checkMe(this)"><%=UnCheckStr(commArr(7,Pcount))%></textarea></div>
4.找到
                            SQL="Select comm_ID,comm_Content,comm_Author,comm_PostTime,comm_PostIP,blog_ID,T.log_Title from blog_Comment C,blog_Content T Where C.blog_ID=T.log_ID orDER BY C.comm_PostTime desc"
修改为:
                            SQL="Select comm_ID,comm_Content,comm_Author,comm_PostTime,comm_PostIP,blog_ID,T.log_Title,comm_Reply from blog_Comment C,blog_Content T Where C.blog_ID=T.log_ID orDER BY C.comm_PostTime desc"
5.
找到
elseif  Request.form("doModule")="Update" then
             for i=0 to ubound(doCommID)
                if Request.form("whatdo")="msg" then
doTitle="评论"
                        doRedirect=""
                end if
             next
中间的几行代码,全部替换为:
                        dim blog_book_reply
                        set blog_book_reply=Conn.Execute("select book_reply FROM blog_book Where book_ID="&doCommID(i))
                        if blog_book_reply("book_reply")=checkStr(Request.form("reply_"&doCommID(i))) then
                                conn.execute("Update blog_book SET book_Content='"&checkStr(Request.form("message_"&doCommID(i)))&"',book_replyAuthor='"&memName&"' Where book_ID="&doCommID(i))
                        else
                                conn.execute("Update blog_book SET book_Content='"&checkStr(Request.form("message_"&doCommID(i)))&"',book_replyAuthor='"&memName&"',book_replyTime=#"&DateToStr(now(),"Y-m-d H:I:S")&"#,book_reply='"&checkStr(Request.form("reply_"&doCommID(i)))&"' Where book_ID="&doCommID(i))
                        end if
                        doTitle="留言"
                        doRedirect="msg"
                elseif Request.form("whatdo")="comment" then
                          dim blogcommid
                          set blogcommid=Conn.ExeCute("select comm_Reply from blog_Comment where comm_ID="&doCommID(i))
                          if blogcommid("comm_Reply")=checkStr(Request.form("reply_"&doCommID(i))) then
                                conn.execute("Update blog_Comment SET comm_Content='"&checkStr(Request.form("message_"&doCommID(i)))&"' Where comm_ID="&doCommID(i))
                        else
                                conn.execute("Update blog_Comment SET comm_Content='"&checkStr(Request.form("message_"&doCommID(i)))&"',comm_Reply='"&checkStr(Request.form("reply_"&doCommID(i)))&"',Comm_replytime=#"&DateToStr(now(),"Y-m-d H:I:S")&"# Where comm_ID="&doCommID(i))
                        end if
6。下载附件,上传Update.ASP到博客目录执行升级数据库。

OK。全文完。


下载文件 点击下载此文件


[本日志由 小戒 于 2008-09-18 08:47 PM 编辑]
上一篇: 留言评论邮件通知博主For pjblog2.6|2.7
下一篇: Sql Server 和 Access 操作数据库结构Sql语句
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: 评论 留言 PJBLOG
相关日志:
评论: 16 | 引用: 0 | 查看次数: -
一切平凡
回复回复一切平凡[2008-09-14 09:45 PM | | | del]
抱歉,我重新把圖上傳了!麻煩請至下列開圖!

我用的版本是PJBlog2 v2.7 Build05
回复来自 小戒 的评论 小戒 于 2008-09-15 02:31 PM 回复
我还是没看到图。
一切平凡
回复回复一切平凡[2008-09-14 09:40 PM | | | del]
抱歉,此張圖片在http://bbs.pjhome.net/thread-27746-12-1.html可以看到!
我用的版本是PJBlog2 v2.7 Build05
一切平凡
回复回复一切平凡[2008-09-12 02:27 PM | | | del]
请问我照上述步骤修改了之后是可以用了,也确实把第2步中的***去掉了,
但为何时间显示是为 y-d-m 呢?请问是否我有哪个步骤改错了?



回复来自 小戒 的评论 小戒 于 2008-09-14 09:35 AM 回复
我一直打不开你的图,升级到157后已经集成了此功能,请问你的是什么版本呢?
jojo
回复回复jojo[2008-07-04 01:35 AM | | | del]
引用来自 weixing 引用来自 weixing
都按照步骤做了啊,之前功能是完全正常的,最近才出现这个问题的。而且期间我也没有对Blog做任何改动,也没装任何插件。
测试一下是否好用
牛喜喜
回复回复牛喜喜[2008-06-19 11:26 PM | | | del]
老大,装了AJAX评论的应该如何修改?
阿达
回复回复阿达[2008-05-09 11:12 AM | | | del]
Microsoft VBScript 编译器错误 错误 '800a0409'

未结束的字符串常量

/class/cls_article.asp,行 56

TempStr=TempStr&"<a href=""article.asp?action=Reply&commID="&blog_CommID&"&ID="&LogID&"#comm_"&blog_CommID&"""><img src=""Plugins/guestbook/reply.gif"" alt=""回复"" border=""0"" style=""margin-bottom:-3px""/></a>

回复来自 小戒 的评论 小戒 于 05/09/2008 18:04:37 回复
可能是错误断行了,后面少了个双引号。
崇焱
回复回复崇焱[2008-04-16 07:38 PM | | | del]
修改完成后一点击日志就出错,出错原因为DATETIME,请问......
slim
回复回复slim[2008-04-16 10:15 AM | | | del]
博主,是不是应该将回复内容放在留言区域里更好呢
weixing
回复回复weixing[2008-04-07 11:07 PM | | | del]
都按照步骤做了啊,之前功能是完全正常的,最近才出现这个问题的。而且期间我也没有对Blog做任何改动,也没装任何插件。
weixing
回复回复weixing[2008-04-05 11:59 PM | | | del]
就是我对别人的评论回复后,系统提示成功了
但是在我评论的地方没有发现我的回复啊~这是什么情况
回复来自 小戒 的评论 小戒 于 06/04/2008 00:28:01 回复
第1.3步改了吗?
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 支持Gravatar头像.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.