大张小站

  1. @八角石

    欢迎关注我的新浪微博 @八角石 !

    [ 更多详情 ]

  2. 人生

    自歌自舞自开怀,且喜无拘无碍。

  3. 心境

    若得心净如明月,长空万里了无尘。

  4. 情渊

    他生莫做有情痴,人间无地著相思。

  • 1
  • 2
  • 3
  • 4
4,774

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.vdazhang.com/wenzhang-154.html
若您喜欢这篇文章,欢迎订阅大张小站以获得最新内容。 / 欢迎交流探讨,请发电子邮件至 mail[at]vdazhang.com 。


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