|
PJFORUM新人
  
- UID
- 15086
- 帖子
- 14
- 精华
- 0
- 积分
- 584
- PJ币
- 76 元
- 专长
-
- 在线时间
- 57 小时
- 注册时间
- 2006-8-2
|
1#
大 中
小 发表于 2006-11-2 12:50 只看该作者
『原创』pjblog2 加密日志补丁程序 V2.1 (更新手动修改方法)
////////////////////////////////////////////////////////////////////////////////////////
pjblog2 加密日志补丁程序 V1.0
原创作者:vjlin
日 期:2006-11-1
演示地址: http://www.MeBox.cn
下载地址: http://www.mebox.cn/article.asp?id=235
QQ:688781 e-Mail:vjlin@qq.com
////////////////////////////////////////////////////////////////////////////////////////
2008.2.26 Rison:此帖功能仅支持PJBlog v2.6版本, v2.7版本用户请查看《 插件补丁|日志加密功能 For PJBlog v2.7 Build05》
功能说明:
可给每篇日志单独设置一个访问密码,只有在密码输入正确后才可以查看日志内容。
安装方法:
先打开数据库文件,在表“blog_Content”内添加新字段“log_Readpw”类型为文本,然后将安装包内所有文件复制到你网站文件夹覆盖原有文件即可。
使用方法:
安装成功后在发布和编辑日志的时候会有一个密码输入框,如果你想为某篇日志设置访问密码只需在密码框内输入然后保存日志即可;如果是想取消访问密码,只需在编辑时清空密码框内容然后保存日志即可。日志类型(隐藏日志/公开日志)不影响加密功能的使用。
11/6
·更改版本号为2.1
·增加对列表模式进行加密处理
·增加管理员无需输入密码即可查看日志内容权限
·优化部分代码
11/4
应网友要求我今天抽时间把加密日志手动修改方法整理出来并做了部分升级,相关更新内容请查看http://www.mebox.cn/article.asp?id=235,以下是具体的手动修改步骤(整理得比较匆忙如有遗漏请到这里回复告知 http://www.mebox.cn/article.asp?id=239)
·更改版本号为2.0
·增强密码验证功能,现在可同时查看多篇加密日志(密码不同)且不会互相干扰(1.0在查看多篇不同密码的加密日志时会产生干扰)
·增加多次输入密码错误后(3次错误)系统自动锁定该日志,避免暴力破解以保证日志安全
2.1手动修改方法
修改涉及文件
class/cls_logAction.asp
class/cls_default.asp
class/cls_article.asp
article.asp
blogpost.asp
blogedit.asp
--------------------------------------------------
注意:先打开数据库文件,在表“blog_Content”内添加新字段“log_Readpw”类型为文本,然后在继续下面的步骤
------------------
class/cls_logAction.asp
第一步
查找:public logIsShow,logIsDraft,logWeather,logLevel,logCommentOrder
替换成:public logIsShow,logIsDraft,logWeather,logLevel,logCommentOrder,logReadpw
第二步
查找:logPublishTimeType="now"
在下面添加:logReadpw = ""
第三步
查找:weblog("log_comorder")=logCommentOrder
在下面添加:weblog("log_Readpw")=logReadpw
(注意有两处,两处都要添加)
第四步
查找:sqlString="Select top 1 log_CateID,log_Author,log_Title,log_edittype,log_ubbFlags,log_Intro,log_weather
,log_Level,log_comorder,log_DisComment,log_IsShow,log_IsTop,log_IsDraft,log_From
,log_FromURL,log_Content,log_tag,log_PostTime,log_CommNums
,log_QuoteNums,log_ViewNums
替换成:sqlString="Select top 1 log_CateID,log_Author,log_Title,log_edittype,log_ubbFlags,log_Intro,log_weather
,log_Level,log_comorder,log_DisComment,log_IsShow,log_IsTop,log_IsDraft,log_From
,log_FromURL,log_Content,log_tag,log_PostTime,log_CommNums
,log_QuoteNums,log_ViewNums,log_Readpw
第五步
查找:logViewCount = weblog("log_ViewNums")
在下面添加:logReadpw = weblog("log_Readpw")
--------------------------
class/cls_default.asp
第一步
查找: strSQL="log_ID,log_CateID,log_Author,log_Title,log_PostTime,log_IsShow
,log_CommNums,log_QuoteNums,log_ViewNums,log_IsTop"
替换成:strSQL="log_ID,log_CateID,log_Author,log_Title,log_PostTime,log_IsShow
,log_CommNums,log_QuoteNums,log_ViewNums,log_IsTop,log_Readpw"
第二步
查找: strSQL="log_ID,log_CateID,log_Author,log_Title,log_PostTime,log_IsShow
,log_CommNums,log_QuoteNums,log_ViewNums,log_IsTop,log_Intro
,log_Content,log_edittype,log_DisComment,log_ubbFlags,log_tag"
替换成:strSQL="log_ID,log_CateID,log_Author,log_Title,log_PostTime,log_IsShow
,log_CommNums,log_QuoteNums,log_ViewNums,log_IsTop,log_Intro
,log_Content,log_edittype,log_DisComment,log_ubbFlags,log_tag
,log_Readpw"
第三步
查找: if not stat_ShowHiddenCate and not stat_Admin then exit function
end if
在下面添加:
'加密日志权限判断 开始
dim bReadPW
bReadPW = false
If webLogArr(16,PageCount) = "" or isNull(webLogArr(16,PageCount)) or Session("MeBox_ReadPassWord_"&webLogArr(0,PageCount)) = webLogArr(16,PageCount) or stat_Admin Then bReadPW = true
'加密日志权限判断 结束
(注意有两处,第一处在输出普通模式那里添加上面这段代码,第二出在输出列表模式那里添加下面这段代码,如不需要加密列表模式日志标题可不添加下面这段代码)
'加密日志权限判断 开始
dim bReadPW
bReadPW = false
If webLogArr(10,PageCount) = "" or isNull(webLogArr(10,PageCount)) or Session("MeBox_ReadPassWord_"&webLogArr(0,PageCount)) = webLogArr(10,PageCount) or stat_Admin Then bReadPW = true
'加密日志权限判断 结束
第四步(加密普通模式日志标题,如不需要加密标题可跳过)
查找: <a class="titleA" href="article.asp?id=<%=webLogArr(0,PageCount)%>"><%=HtmlEncode(webLogArr(3,PageCount))%></a>
替换成: If bReadPW Then '密码访问
%> <a class="titleA" href="article.asp?id=<%=webLogArr(0,PageCount)%>"><%=HtmlEncode(webLogArr(3,PageCount))%></a>
<%Else%>
<a class="titleA" href="article.asp?id=<%=webLogArr(0,PageCount)%>">[加密日志]</a>
<%End If%>
第五步
查找:if webLogArr(5,PageCount)=false or getCate.cate_Secret then
替换成:
if webLogArr(5,PageCount)=false or getCate.cate_Secret or (webLogArr(16,PageCount) <> "" And Not isNull(webLogArr(16,PageCount))) then
(注意有两处,第一处在输出普通模式那里替换上面这段代码,第二出在输出列表模式那里替换下面这段代码)
if webLogArr(5,PageCount)=false or getCate.cate_Secret or (webLogArr(10,PageCount) <> "" And Not isNull(webLogArr(10,PageCount))) then
第六步
查找: if CanRead then
if webLogArr(12,PageCount)=1 then%>
替换成: if CanRead then
If bReadPW Then '密码访问
if webLogArr(12,PageCount)=1 then%>
第七步
查找: End If
if len(webLogArr(15,PageCount))>0 then
替换成:end if
Else%>
<div class="Content-body">该日志是加密日志,需要输入密码才可以查看!
<%End If
if len(webLogArr(15,PageCount))>0 then
第八步(加密列表模式日志标题,如不需要加密标题可跳过)
查找: <%If CanRead Then%>
<a href="<%=logLink%>" title="作者:<%=webLogArr(2,PageCount)%>日期:<%=DateToStr(webLogArr(4,PageCount),"Y-m-d")%>"><%=HtmlEncode(webLogArr(3,PageCount))%></a>
替换成: <%If CanRead Then
If bReadPW Then '密码访问%>
<a href="<%=logLink%>" title="作者:<%=webLogArr(2,PageCount)%>日期:<%=DateToStr(webLogArr(4,PageCount),"Y-m-d")%>"><%=HtmlEncode(webLogArr(3,PageCount))%></a>
<%Else%>
<a href="<%=logLink%>">[加密日志]</a>
<%End If%>
------------------------
class/cls_article.asp
第一步
查找: <div id="logPanel" class="Content-body">
<%
在下面添加: Dim ChkReadPW
ChkReadPW = Trim(Request("PW"))
If ChkReadPW = "" Then
ChkReadPW = Session("MeBox_ReadPassWord_"&LogID)
Else
Session("MeBox_ReadPassWord_"&LogID) = ChkReadPW
End If
'密码验证错误次数
If IsNull(Session("MeBox_chkpwErr_"&LogID)) or IsEmpty(Session("MeBox_chkpwErr_"&LogID)) Then Session("MeBox_chkpwErr_"&LogID) = 0
If Session("MeBox_chkpwErr_"&LogID) >= 3 Then
%>
<script>alert("密码已连续错误<%=Session("MeBox_chkpwErr_"&LogID)%>次,该日志已被锁定暂时不可以查看!");</script>
该日志是加密日志,你输入的密码已连续错误<%=Session("MeBox_chkpwErr_"&LogID)%>次,你的IP已被记录日志已被锁定暂时不可以查看!<br/><br/>
<%
ElseIf log_ViewArr(20,0) = "" or IsNull(log_ViewArr(20,0)) or log_ViewArr(20,0) = ChkReadPW or stat_Admin Then '密码访问
第二步
查找: end if %>
<br/><br/>
</div>
<div class="Content-body">
<%if len(log_ViewArr(16,0))>0 then response.write (log_ViewArr(16,0)&"<br/>")%>
在上面添加: end if
Else
If Trim(Request.Form("do")) = "chkpw" Then
Session("MeBox_chkpwErr_"&LogID) = Session("MeBox_chkpwErr_"&LogID) + 1
%>
<script>alert("密码错误,请输入正确的密码!");</script>
<%
End If
%>
<form id="chkread" name="chkread" method="post" action="">
该日志是加密日志,需要输入密码才可以查看!<br/><br/>
<label>
请输入访问密码:<input name="pw" type="password" id="pw" size="10" class="inputBox" /><input name="do" type="hidden" value="chkpw" />
<input type="submit" name="Submit" value="确定" class="userbutton" />
</label>
</form>
<%
-------------------------------
article.asp
第一步
查找: log_DisComment FROM blog_Content
替换成: log_DisComment,log_Readpw FROM blog_Content
第二步
查找: log_tag FROM blog_Content
替换成: log_tag,log_Readpw FROM blog_Content
-------------------------------
blogpost.asp
第一步
查找: lArticle.logPublishTimeType = request.form("PubTimeType")
在下面添加: lArticle.logReadpw = request.form("log_Readpw")
第二步
查找: <input name="log_FromURL" type="text" id="log_FromURL" value="<%=siteURL%>" size="38" class="inputBox" />
在下面添加: <span style="font-weight: bold">密码:</span>
<input name="log_Readpw" type="password" id="Readpw" size="10" class="inputBox" />
--------------------------------------
blogedit.asp
第一步
查找: lArticle.logPublishTimeType = request.form("PubTimeType")
在下面添加: lArticle.logReadpw = request.form("log_Readpw")
第二步
查找: <input name="log_FromURL" type="text" id="log_FromURL" size="38" class="inputBox" value="<%=lArticle.logFromURL%>"/>
在下面添加: <span style="font-weight: bold"> 密码:</span>
<input name="log_Readpw" type="password" id="log_Readpw" size="10" class="inputBox" value="<%=lArticle.logReadpw%>" />
[ 本帖最后由 Rison 于 2008-2-26 15:18 编辑 ]
|