Warning: file_get_contents(http://www.fstgmc.com/d/d/index.php) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in D:\home\pjforum\wwwroot\forum.php on line 10
给日志评论增加回复功能for pjblog (4/8凌晨更新,修改越权提交的BUG,危险)-PJBlog3 插件-早期插件-[PJBlog^2019]用户聚居地 - ASP中文开源博客系统PJBlog - Powered by Discuz!
由于GAE(Google App Engine)被墙,导致PJBlog过去发布在GAE的源码无法正常下载,我们已于2015年1月4日转移至论坛附件。如发现类似问题,敬请反馈。

[PJBlog^2019]用户聚居地 - ASP中文开源博客系统PJBlog

 找回密码
 立即加入PJHOME

QQ登录

只需一步,快速开始

扫一扫,访问微社区

PJHOME-PJBlog官方论坛 你的关注和支持,是PJBlog不断成长的动力 指南 - 建议 - 展示 - 风云互联 - 合作

PJBlog3 经典版本(推荐) 最终版本:PJBlog3 V3.2.9.518(2011/11/01) 安装 - 升级 - 转换 - 模板 - 插件 - 反馈

PJBlog5 云博客(不推荐) 公测版本:PJBlog5 V1 公测版(2015/01/01) 发布 - 交流 - 文档 - 主题 - 插件 - 云平台

查看: 49305|回复: 113

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

 关闭 [复制链接]
发表于 2007-12-12 19:02 | 显示全部楼层 |阅读模式
作者:戒聊。
发布网址: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,找到
  1. Sub ShowComm(LogID,comDesc,DisComment)
复制代码
,在下面插入
  1.           dim action,commID,CommReplyContent
  2.           action = trim(Request.QueryString("action"))
复制代码
找到Pcount=0这行下面的SQL语句,即SQL="****",小心修改。
如果已经做了我发布的《评论留言加上邮箱和网址(可防垃圾广告)》的朋友请直接将这句SQL语句替换为:
  1.                 if action="Reply" then
  2.                 commID=request("commID")
  3.            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
  4.                 else
  5.            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
  6.            end if
复制代码
否则替换为:
  1.                 if action="Reply" then
  2.                 commID=request("commID")
  3.            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
  4.                 else
  5.            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
  6.            end if
复制代码
1.2找到
  1. <a href=""blogcomm.asp?action=del&commID="&blog_CommID&""" onclick=""if (!window.confirm('是否删除该评论?')) {return false}"">
复制代码
在之前插入
  1. <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>
复制代码
找到
  1. <div id="MsgHead">
复制代码
  1. 发表评论
复制代码
修改为:
  1. <%
  2.           if action="Reply" then
  3.                   response.write "回复评论"
  4.           else
  5.                   response.write "发表评论"
  6.           end if
  7. %>
复制代码
找到
  1.               <input name="action" type="hidden" value="post"/>
复制代码
替换为:
  1. <%
  2.           if action="Reply" then
  3. %>
  4.               <input name="action" type="hidden" value="Reply"/>
  5.               <input name="commID" type="hidden" value="<%=blog_CommID%>"/>
  6. <%
  7.           else
  8. %>
  9.               <input name="action" type="hidden" value="post"/>
  10. <%
  11.           end if
  12. %>                          
复制代码
1.3找到:
  1.    <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:
  1.            <%if len(commArr(12,Pcount))>0 then %>
  2.                  <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>
  3.                  <div class="commentcontent"><%=UBBCode(HtmlEncode(commArr(12,Pcount)),0,0,0,1,1)%></div>
  4.            <%end if%>
复制代码
1.4找到
  1. blog_CommID=commArr(0,Pcount)
  2.            blog_CommAuthor=commArr(2,Pcount)
  3.            blog_CommContent=commArr(1,Pcount)
复制代码
在下面插入(注意里面的12,按实际情况修改,可能为10)
  1.    CommReplyContent=commArr(12,Pcount)
复制代码
1.5找到
  1.            UBB_TextArea_Height="150px;"
  2.            UBB_Tools_Items="bold,italic,underline"
  3.            UBB_Tools_Items=UBB_Tools_Items&"||image,link,mail,quote,smiley"
复制代码
在下面插入
  1.           if action="Reply" then
  2.               UBB_Msg_Value=UBBFilter(UnCheckStr(CommReplyContent))
  3.            end if
复制代码
1.6找到
  1.                  if not stat_CommentAdd then
  2.               response.write ("你没有权限发表留言!")
  3.               response.write ("</div></div>")
  4.               exit sub
  5.        end if
复制代码
在其上或其下插入如下代码:
  1.           if action="Reply" and not stat_Admin then
  2.               response.write ("你没有权限回复留言!")
  3.               response.write ("</div></div>")
  4.               exit sub
  5.           end if
复制代码
2。打开blogcomm.asp,在最后一个
  1. %>
复制代码
之前插入如下代码:

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

找到
  1. <%
  2. else
  3. response.write ("非法操作!!")
复制代码
在上面插入如下代码:
  1. <%
  2. elseif Request("action")="Reply" then
  3. PostBComm=replyMsg
  4. %>
  5.    <div style="text-align:center;">
  6.     <div id="MsgContent" style="width:300px">
  7.       <div id="MsgHead"><%=PostBComm(0)%></div>
  8.       <div id="MsgBody">
  9.                  <div class="<%=PostBComm(2)%>"></div>
  10.          <div class="MessageText"><%=PostBComm(1)%></div>
  11.           </div>
  12.         </div>
  13.   </div>
复制代码
3。打开ConContent.asp,找到
  1.                                                 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))

找到第二处的(有两处)
  1.                                                                         <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>
复制代码
在下面插入:
  1.                                                                         <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.找到
  1.                                                         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"
复制代码
修改为:
  1.                                                         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.
找到
  1. elseif  Request.form("doModule")="Update" then
  2.                      for i=0 to ubound(doCommID)
  3.                                 if Request.form("whatdo")="msg" then
复制代码
  1. doTitle="评论"
  2.                                             doRedirect=""
  3.                                 end if
  4.                      next
复制代码
中间的几行代码,全部替换为:
  1.                                                 dim blog_book_reply
  2.                                                 set blog_book_reply=Conn.Execute("select book_reply FROM blog_book WHERE book_ID="&doCommID(i))
  3.                                                 if blog_book_reply("book_reply")=checkStr(Request.form("reply_"&doCommID(i))) then
  4.                                                                 conn.execute("UPDATE blog_book SET book_Content='"&checkStr(Request.form("message_"&doCommID(i)))&"',book_replyAuthor='"&memName&"' WHERE book_ID="&doCommID(i))
  5.                                                 else
  6.                                                                 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))
  7.                                                 end if
  8.                                                 doTitle="留言"
  9.                                             doRedirect="msg"
  10.                                 elseif Request.form("whatdo")="comment" then
  11.                                                   dim blogcommid
  12.                                                   set blogcommid=Conn.ExeCute("select comm_Reply from blog_Comment where comm_ID="&doCommID(i))
  13.                                                   if blogcommid("comm_Reply")=checkStr(Request.form("reply_"&doCommID(i))) then
  14.                                                                 conn.execute("UPDATE blog_Comment SET comm_Content='"&checkStr(Request.form("message_"&doCommID(i)))&"' WHERE comm_ID="&doCommID(i))
  15.                                                 else
  16.                                                                 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))
  17.                                                 end if
复制代码
6。下载附件,上传Update.ASP到博客目录执行升级数据库。

OK。全文完。

如有疑问,请在http://www.muzili.com/article.asp?id=7833留言。

[ 本帖最后由 戒聊 于 2008-4-19 16:31 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即加入PJHOME

x

评分

参与人数 1PJ币 +100 收起 理由
anson + 100 优秀插件

查看全部评分

欢迎来到PJHOME社区,PJ有你更精彩!!
发表于 2007-12-12 19:23 | 显示全部楼层
还收费???

不过还是顶下
欢迎来到PJHOME社区,PJ有你更精彩!!
回复 支持 反对

使用道具 举报

发表于 2007-12-12 19:26 | 显示全部楼层
5元不贵,不过有没有保修啊?
欢迎来到PJHOME社区,PJ有你更精彩!!
回复 支持 反对

使用道具 举报

发表于 2007-12-12 19:31 | 显示全部楼层
保修到新版本吧
欢迎来到PJHOME社区,PJ有你更精彩!!
回复 支持 反对

使用道具 举报

发表于 2007-12-12 19:44 | 显示全部楼层


弄好之后,我测试的时候,点击发表显示该页无法显示
欢迎来到PJHOME社区,PJ有你更精彩!!
回复 支持 反对

使用道具 举报

发表于 2007-12-12 20:29 | 显示全部楼层
在作者的帮助下,已经弄好了~
欢迎来到PJHOME社区,PJ有你更精彩!!
回复 支持 反对

使用道具 举报

发表于 2007-12-12 21:33 | 显示全部楼层
希望楼主放出修改后的源文件.以便不会修改的直接覆盖.
欢迎来到PJHOME社区,PJ有你更精彩!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-12 21:44 | 显示全部楼层
原帖由 o0o 于 2007-12-12 21:33 发表
希望楼主放出修改后的源文件.以便不会修改的直接覆盖.



呵呵。不会修改的直接覆盖的话永远也只能装一个东西。
欢迎来到PJHOME社区,PJ有你更精彩!!
回复 支持 反对

使用道具 举报

发表于 2007-12-12 22:00 | 显示全部楼层
欢迎来到PJHOME社区,PJ有你更精彩!!
回复 支持 反对

使用道具 举报

发表于 2007-12-12 22:02 | 显示全部楼层
原帖由 kkey0416 于 2007-12-12 21:44 发表



呵呵。不会修改的直接覆盖的话永远也只能装一个东西。

这句话说的没错,呵呵,自己试着改改吧
欢迎来到PJHOME社区,PJ有你更精彩!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入PJHOME

本版积分规则

关闭

PJHOME小黑板报上一条 /1 下一条

小黑屋|手机版|纯文字版|BBS.PJHOME.NET ( 粤ICP备12036560号-1 )

GMT+8, 2021-9-28 12:18 , Processed in 0.149877 second(s), 28 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表