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) {
                $replaceStr = '***分享链接仅楼主和回帖人可见***';
                $searchArray = array('baidu.com', '115.com', 'aliyundrive.com');
                foreach ($searchArray as $searchStr) {
                    if (strpos($post['message'], $searchStr) !== false) {
                        $post['message'] = preg_replace('/http[s]?://[^ ]*' . preg_quote($searchStr) . '[^ ]*/i', $replaceStr, $post['message']);
                    }
                }
                
                // 移除所有的 a 标签以确保替换后的文本不再是超链接
                $post['message'] = preg_replace('/<a[^>]*>|</a>/i', '', $post['message']);
            }
        }
    }
}

使用方法

  1. 将以上代码保存为 plugin_wangpancheck.php 文件
  2. 将文件上传至 Discuz 的 source/plugin 目录下
  3. 进入 Discuz 后台,启用该插件

功能说明

  • 该插件会检测帖子内容中是否包含 'baidu.com', '115.com', 'aliyundrive.com' 链接
  • 如果检测到链接,并且当前用户不是帖子作者或主题作者,则会将链接替换为 '分享链接仅楼主和回帖人可见'
  • 插件还会移除所有 a 标签,确保替换后的文本不再是超链接

注意事项

  • 该插件仅能隐藏包含 'baidu.com', '115.com', 'aliyundrive.com' 的链接,其他网盘链接需要自行添加代码
  • 该插件可能无法识别所有类型的网盘链接,建议使用官方的网盘分享功能
  • 为了安全起见,建议定期更新插件代码以修复漏洞
Discuz 插件:隐藏网盘分享链接,保护隐私

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

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