修改代码使Discuz论坛(DZ6)全面屏蔽禁止URL超链接功能

  这几天发现我的论坛不断有人发表垃圾回复,回复内容与主题无关,且里面包含少则三四个,多则七八个网站链接,签名里也带了链接,这不仅污染了帖子,而且很可能因为这些垃圾链接而使我的网站被Google和百度等搜索引擎降权,不得已我禁止了所有链接,包括正常的链接。

  刚开始我用Google搜索如何禁止DZ6(Discuz)论坛的链接功能,发现大家都答复论坛后台设置没这个选项,接着我找到这样一个帖子:

打开:include\javascript\post.js

查找并删除之:
function parseurl(str, mode) {
 str= str.replace(/\s*\[code\]([\s\S]+?)\[\/code\]\s*/ig, function($1, $2) {return codetag($2);});
 str = str.replace(/([^>=\]“‘\/]|^)((((https?|ftp):\/\/)|www\.)([\w\-]+\.)*[\w\-\u4e00-\u9fa5]+\.([\.a-zA-Z0-9]+|\u4E2D\u56FD|\u7F51\u7EDC|\u516C\u53F8)((\?|\/|:)+[\w\.\/=\?%\-&~`@':+!]*)+\.(jpg|gif|png|bmp))/ig, mode == ‘html’ ? ‘$1<img src=”$2″ mce_src=”$2″ border=”0″>’ : ‘$1[img]$2[/img]‘);
 str = str.replace(/([^>=\]“‘\/@]|^)((((https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|ed2k|thunder|synacast):\/\/))([\w\-]+\.)*[:\.@\-\w\u4e00-\u9fa5]+\.([\.a-zA-Z0-9]+|\u4E2D\u56FD|\u7F51\u7EDC|\u516C\u53F8)((\?|\/|:)+[\w\.\/=\?%\-&~`@':+!#]*)*)/ig, mode == ‘html’ ? ‘$1<a href=”$2″ mce_href=”$2″ target=”_blank”>$2</a>’ : ‘$1[url]$2[/url]‘);
 str = str.replace(/([^\w>=\]“‘\/@]|^)((www\.)([\w\-]+\.)*[:\.@\-\w\u4e00-\u9fa5]+\.([\.a-zA-Z0-9]+|\u4E2D\u56FD|\u7F51\u7EDC|\u516C\u53F8)((\?|\/|:)+[\w\.\/=\?%\-&~`@':+!#]*)*)/ig, mode == ‘html’ ? ‘$1<a href=”$2″ mce_href=”$2″ target=”_blank”>$2</a>’ : ‘$1[url]$2[/url]‘);
 str = str.replace(/([^\w->=\]:”‘\.\/]|^)(([\-\.\w]+@[\.\-\w]+(\.\w+)+))/ig, mode == ‘html’ ? ‘$1<a href=”
mailto:$2″>$2</a>’ : ‘$1[email]$2[/email]‘);
 for(var i = 0; i <= codecount; i++) {
  str = str.replace(”[\tDISCUZ_CODE_" + i + "\t]“, codehtml[i]);
 }
 return str;
}
  我非常高兴,马上就用UltraEdit打开了位于Discuz!_6.0.0_SC_UTF8\upload\include\javascript目录下的这个文件,修改后保存并用FTP上传到主机空间,覆盖原文件。
  
  然后发了个新帖子测试,居然没效果。于是我接着搜索,却发现许多人问:论坛禁用URL识别后怎么无效?还是在discuz官方论坛问的,也没有一个满意的答案。
又换了几个关键词搜索,还是没有满意的结果,看来得自己动手了。  于是我打开Microsoft Visual Studio .NET 2003,在discuz整个目录下的文件里查找href=,arget=”_blank”,这样的字符串,因为这两个都是DZ6自己后来给url加上去的,试了好几个文件,没效果,于是搜索url=字符串,结果“合计找到: 73    匹配文件: 21    合计搜索文件: 467”,还好,不算多。于是看那些样子比较象的地方进行修改,又是试了好几次,终于成功了!

  最终修改位置如下:  打开文件Discuz!_6.0.0_SC_UTF8\upload\include\discuzcode.func.php,把第161行,162行,163行的这三行代码:
    ”/\[url\]\s*(www.|https?:\/\/|ftp:\/\/|gopher:\/\/|news:\/\/|telnet:\/\/|rtsp:\/\/|mms:\/\/|callto:\/\/|bctp:\/\/|ed2k:\/\/|thunder:\/\/|synacast:\/\/){1}([^\[\"']+?)\s*\[\/url\]/ie“,
    ”/\[url=www.([^\[\"']+?)\](.+?)\[\/url\]/is”,
    ”/\[url=(https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|ed2k|thunder|synacast){1}:\/\/([^\[\"']+?)\](.+?)\[\/url\]/is”,

  全部删除!删除后保存文件,上传覆盖掉空间里的这个文件,再次打开论坛帖子,你会发现原来的帖子和回复里的链接全部变成了这样子:   [url=http://www.baidu.com/]112[/url]
  [url=www.baidu.com/]112[/url]
  
  也就是用户原先输入的超链接全部被屏蔽,不再显示为超链接,而是不做处理,原样输出了!
  接着我发现有的用户签名里还是包含超链接,这个好办,我记得论坛设置有屏蔽签名功能的。于是登录discuz后台管理,在系统设置首页-界面与显示方式下面找到了“是否显示作者签名:”这个选项,选则否然后提交。  再次刷新帖子,发现超链接没有了,签名也没有了,哈哈,所有垃圾回复里的链接全部没了。  个人觉得现在不少论坛垃圾回复比较多,这段经历应该对大家有用,所以贴出来,呵呵。

  本文链接: 修改代码使Discuz论坛(DZ6)全面屏蔽禁止URL超链接功能(http://blog.yiyidu.com/2008_130.html)


  如需转载请以超链接形式注明本文地址,且不得盗链本站图片资源。并注明转载自一亿度博客
      归类: 默认

相关文章:
  • No Related Post
5 条评论
  1. 繁体字转换器

    落伍的论坛也屏蔽了超链接

  2. 叶子

    我还不会用链接呢
    正在查找怎么使用
    路过这里支持一下

  3. seo土坷垃

    谢了。
    我用屏蔽功能,把.com替换成。com这个效果也还不错。

  4. 一亿度

    seo土坷垃:不客气,发现你的博客很不错!

  5. xiaoguai

    那些链接真的很讨厌
    谢了

发表评论:

(评论中最多可以包含两个链接[a href形式],超过两个的将被自动删除)

(请您遵守《留言注意事项》,谢谢合作!)

【返回默认】 【返回首页

Copyright © 2008 YiYidu Inc. All rights reserved.