Discuz! 官方站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

DNSPod 新春好礼 - 域名低至 1 元起,代金券大礼包暖心送!
搜索
查看: 17292|回复: 77

[发布] 论坛防止AD【自动屏蔽外部连接】,论坛URl跳转完美无错版FOR Discuz7.0&7.1

[复制链接]
发表于 2009-8-8 12:13:02 | 显示全部楼层 |阅读模式
插件发布
插件名称: 论坛防止AD【自动屏蔽外部连接】自动转向,论坛URl跳转完美无错版FOR Discuz7.0&7.1
插件来源:
适用版本: Discuz! 7.1
语言编码: GBK简体 UTF8简体 
最后更新时间:
插件作者: 【自动屏蔽外部连接】
插件简介: 论坛有很多恶意发广告的ID十分的招人烦,有时候一些被搜索引擎惩罚的网站链接出现在自己论坛,就会对论坛的排名有所影响,所以我一直在寻找实现屏蔽外部链接的功能。测试地址:http://www.y0597.cn/thread-2349-1-1.html可以直接点击链接,本站已经用了此插件(论坛URl跳转完美无错版FOR Discuz7.0)!
DNSPod 新春好礼 - 域名低至 1 元起,代金券大礼包暖心送!
本帖最后由 jackdai 于 2009-10-16 19:20 编辑

站长测试过了,此方法同样适合DZ7.1正式版!可以看我站演示!今天给大家发个DZ论坛很好用的一个小插件,【自动屏蔽外部连接】goto.php自动转向,论坛URl跳转完美无错版FOR Discuz7.0
站长是修改自以下这个插件:
Discuz!插件
插件名称 【自动屏蔽外部连接】
适用版本 Discuz!6.1 (我改成了7.0的)
语言编码 GBK UTF8 BIG5  
插件作者 阿布
版权所属 http://54abu.cn
支持网站 http://www.y0597.cn
插件简介 黑客X档案
论坛有很多恶意发广告的ID十分的招人烦,有时候一些被搜索引擎惩罚的网站链接出现在自己论坛,就会对论坛的排名有所影响,所以我一直在寻找实现屏蔽外部链接的功能。测试地址:http://www.y0597.cn/thread-2349-1-1.html可以直接点击链接,本站已经用了此插件(论坛URl跳转完美无错版FOR Discuz7.0)!

很可惜官方没有给出一个完整的方案,好像只说过关闭掉DZCODE(DZ代码),那多得不偿失呀。
所以我就模仿DEDECMS的论坛还有PHPWIND的代码,修改了一下,用着还不错。

首先需要修改的是include文件夹下的discuzcode.func.php
  1. function parseurl($url, $text) {
复制代码
然后将其整个function替换为
  1. function parseurl($url, $text) {
  2.         if(!$url && preg_match("/((https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|ed2k|thunder|synacast){1}:\/\/|www\.)[^\[\"']+/i", trim($text), $matches)) {
  3.                 $url = $matches[0];
  4.                 $length = 65;
  5.                 if(strlen($url) > $length) {
  6.                         $text = substr($url, 0, intval($length * 0.5)).' ... '.substr($url, - intval($length * 0.3));
  7.                 }
  8.                 if($url == str_replace("y0597.cn","",strtolower($url))){        //检测为外部站点
  9.                         if(substr(strtolower($url), 0, 7) == 'http://') {
  10.                                 $url = 'http://www.y0597.cn/goto.php?url='.base64_encode($url);
  11.                         }elseif(substr(strtolower($url), 0, 4) == 'www.') {
  12.                                 $url = 'http://www.y0597.cn/goto.php?url='.base64_encode('http://'.$url);
  13.                         }
  14.                 } else {        //否则就为自身站点
  15.                         if(substr(strtolower($url), 0, 4) == 'www.') {
  16.                                 $url = 'http://'.$url;
  17.                         }
  18.                 }
  19.                 return '<a href="'.$url.'" target="_blank">'.$text.'</a>';
  20.         } else {
  21.                 $url = substr($url, 1);
  22.                 if($url == str_replace("y0597.cn","",strtolower($url))){        //检测为外部站点
  23.                         if(substr(strtolower($url), 0, 7) == 'http://') {
  24.                                 $url = 'http://www.y0597.cn/goto.php?url='.base64_encode($url);
  25.                         }elseif(substr(strtolower($url), 0, 4) == 'www.') {
  26.                                 $url = 'http://www.y0597.cn/goto.php?url='.base64_encode('http://'.$url);
  27.                         }
  28.                 } else {        //否则就为自身站点
  29.                         if(substr(strtolower($url), 0, 4) == 'www.') {
  30.                                 $url = 'http://'.$url;
  31.                         }
  32.                 }
  33.                 return '<a href="'.$url.'" target="_blank">'.$text.'</a>';
  34.         }
  35. }
复制代码
大家需要将里面的www.y0597.cn替换为自己的域名。
然后还要将str_replace("y0597.cn","",strtolower($url))中的y0597.cn替换你域名的主体部分。
比如你的域名是bbs.y0597.com,那么就是str_replace("y0597.com","",strtolower($url))。
正是这条语句来判断链接是否为外部的地址。

我来解释一下:

如果发现一个链接是外部的站点就通过检测前几个字符获得其完整的访问地址,并作为自身站点一个转向文件(goto.php)的参数。
如果发现这个链接是自身的站点就通过检测前几个字符获得其完整的访问地址。

并且将外部链接地址使用了BASE64加密处理。

当然还有GOTO.PHP文件
  1. <html>
  2. <head>
  3. <meta http-equiv=Content-Type content="text/html;charset=gb2312">
  4. <title>页面正在跳转中 - 龙盛创想论坛 - 原龙岩信息网</title>
  5. <meta http-equiv="refresh" content="3;url=<?php echo base64_decode($url) ?>">
  6. </head>
  7. <body>
  8. <p>在3秒后自动跳转至下面这个网址,请确定网址是否安全<p>
  9. <p>【<?php echo str_replace("http://","",base64_decode($url)) ?>】</p>
  10. <p><a href="<?php echo base64_decode($url) ?>">点击此处立即打开链接</a><p>
  11. </body>
  12. </html>
复制代码
我再来解释一下:

很简单的HTML页面,需要说的就是<?php echo str_replace("http://","",base64_decode($url)) ?>
这条语句将网址中的http://字符给去掉了,主要是为了美观。当然你也可以还原其本来面目。
<?php echo base64_decode($url) ?>即可。


原作者是用于DZ6.1的 站长发现用在DZ7.0 发帖会出错,看帖也会出错,于是稍微修改了下DZ7.0的include文件夹下的discuzcode.func.php  成功运用到了7.0上 看不懂以上说明的可以回复本贴后 下载附件(论坛URl跳转完美无错版FOR Discuz7.0.rar),把discuzcode.func.php覆盖到include文件夹下的discuzcode.func.php ,把goto.php上传到论坛根目录即可完美实现用跳转的方法屏蔽外链和AD


免费下载地址:http://www.y0597.cn/thread-2349-1-1.html
有朋友是独立服务器的使用发现无法传递URL到GOTO页面,具体解决的方法参照:http://www.y0597.cn/thread-2595-1-1.html
还有就是 下载的附件 discuzcode.func.php 也要修改里面的地址 y0597.cn 和www.y0597.cn都要替换成你自己的网址才能判断 网站里的地址是不是外链接!
我测试过了,此方法同样适合DZ7.1正式版!可以看我站演示!今天刚刚升级的,同样有效果!

评分

1

查看全部评分

发表于 2009-8-8 12:31:17 | 显示全部楼层
楼主做成新核心的多好呀
回复

使用道具 举报

发表于 2009-8-8 12:31:55 | 显示全部楼层
还有这个以前有朋友发过了
回复

使用道具 举报

 楼主| 发表于 2009-8-8 12:40:22 | 显示全部楼层
以前的是DZ6.1的 我做成DZ7.0的 测试可用后给大家提供的
回复

使用道具 举报

发表于 2009-8-8 12:57:00 | 显示全部楼层
做核心的吧
回复

使用道具 举报

发表于 2009-8-8 14:43:24 | 显示全部楼层
本帖最后由 oduohei 于 2009-8-8 14:46 编辑

这个看来是用不了的哦!代码是谁制造的啊
elseif
不是
else if
这种格式吗? 还有你的GOTO.php里的
<meta http-equiv="refresh" content="3;url=<?php echo base64_decode($url) ?>">
里后面就一个
"3;url=<?php echo base64_decode($url) ?>"
号是引哪啊 这个引意不知道可影响哦.....
回复

使用道具 举报

发表于 2009-8-8 14:53:00 | 显示全部楼层
本帖最后由 oduohei 于 2009-8-8 14:54 编辑

哦忘了前个可 忽略了
<?
是我从没或根本菜了PHPc+了 呵呵 不好意思了 后面的呢?
回复

使用道具 举报

发表于 2009-8-8 15:32:01 | 显示全部楼层
楼主你好 我想加个页面 跳转的网页 可以被我的URL那个连接出去的页面 框架嵌入住  http://blog.tiboo.cn/collect.php?id=60  大概就是类似这个 可以做的简单点的  访问别人站 还是自己地址

多加个文件 应该不怎么难吧。。可以帮助实现一下么。。
这个功能就自己想用用

不过不知道 如果内嵌到了那些被K的网站页面 自己会不是受到影响啊
回复

使用道具 举报

 楼主| 发表于 2009-8-8 16:20:27 | 显示全部楼层
这个看来是用不了的哦!代码是谁制造的啊 不是这种格式吗? 还有你的GOTO.php里的里后面就一个号是引哪啊 这个引意不知道可影响哦.....
oduohei 发表于 2009-8-8 14:43



<meta http-equiv="refresh" content="3;url=<?php echo base64_decode($url) ?>">
这段是GOTO.PHP里的 主要作用是3秒后 自动跳转到 这个外链接 地址
回复

使用道具 举报

发表于 2009-8-8 22:43:08 | 显示全部楼层
是不是有其他位置需要更改
我用不上你的

我進入goto.php 後連結不能出現
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

腾讯云知识产权服务特惠,商标快速注册仅需270元、版权登记低至299元,更有全场2700元代金券大礼包可领,可免费咨询专业顾问。

小黑屋|Discuz! 官方站 ( 粤B2-20090059-165 )star

GMT+8, 2020-7-15 14:28

Powered by Discuz! X3.3

Copyright © 2001-2019 Tencent Cloud.

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