Discuz! 插件:隐藏网盘链接 - 同时替换百度网盘、115网盘、阿里云盘链接

该插件可以有效隐藏 Discuz! 论坛帖子中的网盘链接,防止非授权用户查看。

插件功能:

  • 同时替换百度网盘、115网盘、阿里云盘链接
  • 仅允许帖子作者和回帖人查看网盘链接
  • 隐藏网盘链接文本,防止用户手动复制链接

插件代码:

<?php

if (!defined('IN_DISCUZ')) {
    exit('Access Denied');
}

class plugin_wangpancheck {
   
}

class plugin_wangpancheck_forum extends plugin_wangpancheck {
    var $thread_author_id;

    function viewthread_postbottom_output() {
        global $_G, $postlist, $bestpost;
      
        $bestpost['message'] = '';
                
        foreach ($postlist as &$post) {
            // 如果是主题的第一篇帖子,保存楼主的ID
            if ($post['first']) {
                $this->thread_author_id = $post['authorid'];
            }

            // 判断当前用户是否是帖子回复者或者楼主
            $isAuthorOrThreadAuthor = ($_G['uid'] == $post['authorid']) || ($_G['uid'] == $this->thread_author_id);


            // 如果不是作者或主题作者,则替换含有 'baidu.com', '115.com' 或 'aliyundrive.com' 的整个链接
            if (!$isAuthorOrThreadAuthor) {
                if (strpos($post['message'], 'baidu.com') !== false && strpos($post['message'], '115.com') !== false && strpos($post['message'], 'aliyundrive.com') !== false) {
                    $post['message'] = preg_replace('/http[s]?://[^ ]*(baidu.com|115.com|aliyundrive.com)[^ ]*/i', '***网盘分享链接仅楼主和回帖人可见***', $post['message']);
                } elseif (strpos($post['message'], 'baidu.com') !== false) {
                    $post['message'] = preg_replace('/http[s]?://[^ ]*baidu.com[^ ]*/i', '***百度网盘分享链接仅楼主和回帖人可见***', $post['message']);
                } elseif (strpos($post['message'], '115.com') !== false) {
                    $post['message'] = preg_replace('/http[s]?://[^ ]*115.com[^ ]*/i', '***115网盘分享链接仅楼主和回帖人可见***', $post['message']);
                } elseif (strpos($post['message'], 'aliyundrive.com') !== false) {
                    $post['message'] = preg_replace('/http[s]?://[^ ]*aliyundrive.com[^ ]*/i', '***阿里网盘分享链接仅楼主和回帖人可见***', $post['message']);
                }
                
                // 移除所有的 a 标签以确保替换后的文本不再是超链接
                $post['message'] = preg_replace('/<a[^>]*>|</a>/i', '', $post['message']);
                

            }
        }
    }
}

使用方法:

  1. 将代码复制到 Discuz! 插件目录下,并命名为 wangpancheck.php
  2. 进入 Discuz! 后台,安装插件
  3. 插件安装完成后,帖子中的网盘链接将被隐藏

注意:

  • 该插件只针对帖子内容中的网盘链接进行隐藏,不会影响其他地方的链接
  • 确保插件代码完整并正确安装才能生效

更多功能:

  • 可以根据需要自定义替换文本
  • 可以添加更多网盘链接的判断条件
  • 可以设置不同的隐藏方式

联系我们:

如果您有任何问题或建议,请联系我们。

版权声明:

本插件仅供参考和学习,禁止用于商业用途。

如何同时替换多个网盘链接

在上面的代码中,我们使用 strpos 函数判断帖子内容中是否包含 'baidu.com', '115.com', 'aliyundrive.com',并使用 preg_replace 函数将相应的链接替换为隐藏文本。

如果帖子内容同时包含多个网盘链接,可以使用以下代码进行判断和替换:

if (strpos($post['message'], 'baidu.com') !== false && strpos($post['message'], '115.com') !== false && strpos($post['message'], 'aliyundrive.com') !== false) {
    $post['message'] = preg_replace('/http[s]?://[^ ]*(baidu.com|115.com|aliyundrive.com)[^ ]*/i', '***网盘分享链接仅楼主和回帖人可见***', $post['message']);
}

这段代码使用正则表达式 /(baidu.com|115.com|aliyundrive.com)/i 同时匹配三种网盘链接,并使用 preg_replace 函数将所有匹配到的链接替换为隐藏文本。

其他功能扩展

您可以根据需要对插件进行扩展,例如:

  • 添加更多网盘链接的判断条件
  • 设置不同的隐藏文本
  • 设置不同的隐藏方式,例如使用星号、特殊字符等
  • 添加日志记录功能,方便追踪插件的使用情况

希望本插件能够帮助您有效隐藏 Discuz! 论坛帖子中的网盘链接,提高论坛的安全性。

感谢您的使用!

Discuz! 插件:隐藏网盘链接 -  同时替换百度网盘、115网盘、阿里云盘链接

原文地址: https://www.cveoy.top/t/topic/oYiX 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录