Discuz! 插件:隐藏网盘链接 - 同时替换百度网盘、115网盘、阿里云盘链接
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']);
}
}
}
}
使用方法:
- 将代码复制到 Discuz! 插件目录下,并命名为 wangpancheck.php
- 进入 Discuz! 后台,安装插件
- 插件安装完成后,帖子中的网盘链接将被隐藏
注意:
- 该插件只针对帖子内容中的网盘链接进行隐藏,不会影响其他地方的链接
- 确保插件代码完整并正确安装才能生效
更多功能:
- 可以根据需要自定义替换文本
- 可以添加更多网盘链接的判断条件
- 可以设置不同的隐藏方式
联系我们:
如果您有任何问题或建议,请联系我们。
版权声明:
本插件仅供参考和学习,禁止用于商业用途。
如何同时替换多个网盘链接
在上面的代码中,我们使用 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! 论坛帖子中的网盘链接,提高论坛的安全性。
感谢您的使用!
原文地址: https://www.cveoy.top/t/topic/oYiX 著作权归作者所有。请勿转载和采集!