动网论坛作为一个优秀的ASP论坛程序,两年前曾是千千万万站长的选择。虽然动网论坛官方停止了更新,但是由于我一个站用的是动网论坛,转换的话闲麻烦,而且之前做了不少个性化修改,再者我用着感觉也挺快的,也能够解决需要(毕竟也是一个曾经优化的论坛程序),所以就不打算更换了。
但是动网论坛(V7.1)程序有一个bug,就是首页每个版块的最后发表处经常显示一些UBB代码出来,近日更发现首页排版错乱,查了原因居然是一段最后发表处的没显示完整的带有引号的HTML代码所致。
通过一番查找,根源在于论坛在过滤最后发表的帖子(回复或主题的标题)内容时对HTML代码的剔除存在漏洞,而且并没有进行UBB代码的剔除。找到了根源,于是动手解决起来就容易了。
1、优化剔除HTML标记的Function
打开论坛根目录 inc/Dv_ClsMain.asp 这个文件,查找 Public Function Replacehtml(Textstr) ,把整个Function(如下代码)替换成我优化后的Function.
'去掉HTML标记
Public Function Replacehtml(Textstr)
Dim Str,re
Str=Textstr
Set re=new RegExp
re.IgnoreCase =True
re.Global=True
re.Pattern="]*)>"
Str=re.Replace(Str, "")
Set Re=Nothing
Replacehtml=Str
End Function
优化后的代码:
'去掉HTML标记
Public Function Replacehtml(Textstr)
Dim Str,re
Str=Textstr
Set re=new RegExp
re.IgnoreCase =True
re.Global=True
re.Pattern="]*)>"
Str=re.Replace(Str, "")
'风清扬添加2行 去掉不完整的HTML标记 < > 和 引号
re.Pattern="]*)"
Str=re.Replace(Str, "...")
re.Pattern="[<>""\']"
Str=re.Replace(Str, "")
Set Re=Nothing
Replacehtml=Str
End Function
2、添加一个新的Function用于剔除UBB代码
在第一步Function的后面添加一个Function,用于剔除UBB代码,源代码如下,直接复制过去就行了,不过注意不要放在Function与End Function之间了。
'风清扬添加去掉以[ ]表示的UBB论坛代码
Public Function ReplaceUbb(Textstr)
Dim Str,re
Str=Textstr
Set re=new RegExp
re.IgnoreCase =True
re.Global=True
re.Pattern="\[(.[^>]*)\]"
Str=re.Replace(Str, "")
re.Pattern="\[(.[^\]]*)"
Str=re.Replace(Str, "...")
re.Pattern="[\[\]]"
Str=re.Replace(Str, "")
Set Re=Nothing
ReplaceUbb=Str
End Function
3、修改admin_posting.asp文件
打开论坛根目录的 admin_posting.asp 文件 ,查找
Lasttopic=replace(left(Dvbbs.Replacehtml(rs(0)),15),"$","")
替换成
Lasttopic=replace(left(Dvbbs.ReplaceUbb(Dvbbs.Replacehtml(rs(0))),15),"$","") '风清扬修改
这样修改以后,应该是以后发表贴子(回复或主题都行),该帖子所在的版块的最后发表处就会正常显示文字,而不会含有HTML或者UBB代码了。
4、修改后台重计论坛数据的文件,手动一次性修复所有版块的问题
打开 admin/Update.asp 文件,查找
LastPost=Replace(Dvbbs.Replacehtml(Trs(0)&""),"'","''")
替换成
LastPost=Replace(Dvbbs.ReplaceUbb(Dvbbs.Replacehtml(Trs(0))&""),"'","''") '风清扬修改
改完后,进入动网论坛管理后台,依次找到论坛管理左侧菜单中的 论坛管理 》 重计论坛数据和修复,点击进入后,再在右边的窗口点击 更新分版面数据 按钮,大功告成!
后话:虽然现在很多人抛弃了动网论坛,要么用Discuz!,要么用Phpwind。我想说的是,任何程序都有优点,也都有缺点。运营一个网站,没有必要非得采用最流行的程序,更没有必要非得保持你的程序是最新版本。最新的并不一定是最好的,用得习惯顺手才是最好。再说,老是跟着官方去更新,很累!转换是个很麻烦的问题,更不用说你自己如果做了一些修改的话,兼容性又是一个很大的问题了。所以我觉得,够用就行,没有必要老是升级,除非确实需要新的功能,或者,闲得没事干!