老张小站

  1. 欢迎光临

    感谢访问老张的博客!

  • 1
5,204

Discuz! 论坛程序帖子审核机制优化

分类 网站技术/村民张先生 发布于 2013-03-14 04:40
0

Discuz! 论坛程序默认可设置的审核策略包括:1、关键字过滤列表。帖子中带有需审查的预设敏感词时,自动提交人工审核;2、指定某个等级的用户发帖全部需要审查;3、指定用户在某个版块发帖时全部需要审查。

第一种审核机制问题不大,只是要注意恶意广告程序可能利用 Unicode 字符绕开敏感词审查(表现为在过滤列表中添加了某个词,可仍有用户可以顺利直接发出带有该词的帖子),可以在过滤列表中添加 &#{5}; 禁止携带 Unicode 字符,这对使用GBK编码中文的正常用户几乎没有影响。

很大的问题在于,第二种和第三种措施必须同时设置才能生效。这在某些情况下是矛盾的。我们假定以下几种情况:
1、要让最低等级的用户在任何版块发帖时都需要审核。需要设置审核的地方:低等用户组 + 所有版块 。
2、要让任何用户组在图片版块发帖时全部都需要审核。需要设置审核的地方:所有用户组 + 图片版块 。

两种情况单独应用是没有问题的。问题在于,如果这两种情况要同时应用,即低等级用户在全站发帖都需要审核,高等级用户只在图区发帖时需要审核,该怎么办呢?如果用常规的方法,我们需要设置审核的地方:低等用户组 + 所有版块 + 所有用户组 + 图区版块 ,事实上就是:所有版块 + 所有用户组 ,最后得到的结果是 所有用户 在 所有版块 发帖都需要审核。显然这不是我们需要的。

下面,我们通过简单的方法实现我们需要的效果。
首先设置好 所有用户组(根据需要,可排除版主)+ 图区版块 发帖需要审核;
接下来修改程序(以7.2版本为例*),打开根目录下的 post.php 文件,找到
$modnewthreads = (!$allowdirectpost || $allowdirectpost == 1) && $forum['modnewposts'] || $censormod ? 1 : 0
在末尾加入  || $groupid == 需全面审核的用户组编号;
用户组编号可在Discuz后台查看,光标指向该用户组后面的“编辑”,查看浏览器状态栏。

*2020/01/22补充,X版本修改:source/include/post/post_newthread.php 第14行。

欢迎转载分享,转载请注明 来源:大张小站 https://www.zhang.cq.cn/2013154.html
若您喜欢这篇文章,欢迎订阅老张小站以获得最新内容。 / 欢迎交流探讨,请发电子邮件至 mail[at]vdazhang.com 。


欢迎谈谈你的看法(无须登录) *正文中请勿包含"http://"否则将被拦截