Discuz! 官方站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 17955|回复: 10

解析x2的防灌水机制

[复制链接]
发表于 2011-5-28 20:37:12 | 显示全部楼层 |阅读模式
本帖最后由 dongdong0925 于 2011-5-28 20:36 编辑

x2的防灌水设置在后台-》全局-》防灌水设置-》防灌水基本设置,如图。



防灌水设置是在用户进行发表的操作时进行的判断,这里以发布帖子进行分析。

点击发布帖子的按钮会进入到source\module\forum\forum_post.php文件中。
在这个文件的15行附近,可以找到下面这句代码。
  1. cknewuser();
复制代码
这句代码就是进行防灌水的判断,这个函数的定义在source\function\function_core.php文件中,具体代码如下。
  1. function cknewuser($return=0) {
  2.         global $_G;

  3.         $result = true;

  4.         if(!$_G['uid']) return true;

  5.         if(checkperm('disablepostctrl')) {
  6.                 return $result;
  7.         }
  8.         $ckuser = $_G['member'];

  9.         if($_G['setting']['newbiespan'] && $_G['timestamp']-$ckuser['regdate']<$_G['setting']['newbiespan']*60) {
  10.                 if(empty($return)) showmessage('no_privilege_newbiespan', '', array('newbiespan' => $_G['setting']['newbiespan']), array('return' => true));
  11.                 $result = false;
  12.         }
  13.         if($_G['setting']['need_avatar'] && empty($ckuser['avatarstatus'])) {
  14.                 if(empty($return)) showmessage('no_privilege_avatar', '', array(), array('return' => true));
  15.                 $result = false;
  16.         }
  17.         if($_G['setting']['need_email'] && empty($ckuser['emailstatus'])) {
  18.                 if(empty($return)) showmessage('no_privilege_email', '', array(), array('return' => true));
  19.                 $result = false;
  20.         }
  21.         if($_G['setting']['need_friendnum']) {
  22.                 space_merge($ckuser, 'count');
  23.                 if($ckuser['friends'] < $_G['setting']['need_friendnum']) {
  24.                         if(empty($return)) showmessage('no_privilege_friendnum', '', array('friendnum' => $_G['setting']['need_friendnum']), array('return' => true));
  25.                         $result = false;
  26.                 }
  27.         }
  28.         return $result;
  29. }
复制代码
下面单独分析下这个函数。
  1. if(!$_G['uid']) return true;
复制代码
如果是游客的话不进行后面防灌水的判断。
  1. if(checkperm('disablepostctrl')) {
  2.                 return $result;
  3.         }
复制代码
判断该用户所在的用户组发表的时候是否不受限制,如果不受限制则不进行后续防灌水的判断。发表是否受限制的设置在后台-》用户-》用户组下,如图。


  1. if($_G['setting']['newbiespan'] && $_G['timestamp']-$ckuser['regdate']<$_G['setting']['newbiespan']*60) {
  2.                 if(empty($return)) showmessage('no_privilege_newbiespan', '', array('newbiespan' => $_G['setting']['newbiespan']), array('return' => true));
  3.                 $result = false;
  4.         }
复制代码
此段代码为判断该用户是否满足见习时间的条件,如不满足则提示类似下图的信息。


见习时间的设置在后台-》全局-》注册与访问-》访问控制下,如图。


  1.         if($_G['setting']['need_avatar'] && empty($ckuser['avatarstatus'])) {
  2.                 if(empty($return)) showmessage('no_privilege_avatar', '', array(), array('return' => true));
  3.                 $result = false;
  4.         }
复制代码
此段代码为判断用户是否上传了头像。此条件在后台防灌水设置里开启了强制新用户上传头像后进行判断。
  1. if($_G['setting']['need_email'] && empty($ckuser['emailstatus'])) {
  2.                 if(empty($return)) showmessage('no_privilege_email', '', array(), array('return' => true));
  3.                 $result = false;
  4.         }
复制代码
此段代码为判断用户是否验证激活了邮箱。此条件在后台防灌水设置里开启了强制新用户验证激活邮箱后进行判断。
  1. if($_G['setting']['need_friendnum']) {
  2.                 space_merge($ckuser, 'count');
  3.                 if($ckuser['friends'] < $_G['setting']['need_friendnum']) {
  4.                         if(empty($return)) showmessage('no_privilege_friendnum', '', array('friendnum' => $_G['setting']['need_friendnum']), array('return' => true));
  5.                         $result = false;
  6.                 }
  7.         }
复制代码
此段代码为判断用户的好友数是否满足防灌水设置里设置的强制新用户好友个数。此条件在后台防灌水设置里设置强制新用户好友个数后进行判断。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
发表于 2011-5-29 01:48:53 | 显示全部楼层
强制新用户上传头像之后,新注册用户没上传头像的看不到回复框 ,这个问题怎么解决哦
回复

使用道具 举报

发表于 2011-5-30 03:10:13 | 显示全部楼层
很详细。。。支持了 。。
回复

使用道具 举报

发表于 2011-5-30 09:23:17 | 显示全部楼层
回复

使用道具 举报

发表于 2011-5-30 13:33:09 | 显示全部楼层
学习!!!!!!!!!!!!
回复

使用道具 举报

发表于 2011-7-6 04:10:40 | 显示全部楼层
学习加支持一下
回复

使用道具 举报

发表于 2011-7-6 08:55:29 | 显示全部楼层
oоО^贝乐の 发表于 2011-5-29 01:48
强制新用户上传头像之后,新注册用户没上传头像的看不到回复框 ,这个问题怎么解决哦

以前我也做上传头像限制,可对发帖机根本没有作用,后来我就不做限制了,既然对发帖机不管用,徒增新会员的麻烦,还要他干嘛?
回复

使用道具 举报

发表于 2011-7-7 15:32:42 | 显示全部楼层
qdaa888 发表于 2011-7-6 08:55
以前我也做上传头像限制,可对发帖机根本没有作用,后来我就不做限制了,既然对发帖机不管用,徒增新会员 ...

所有的所有都是为了气氛,都上传头像的会员跟80%不上传头像的会员,对论坛气氛的影响还是很大的
回复

使用道具 举报

发表于 2011-8-25 08:47:17 | 显示全部楼层
支持
!!!!!!!!!!!!!!!!!!
回复

使用道具 举报

发表于 2011-8-25 17:43:09 | 显示全部楼层
我想请问 您放代码那个标有01 02 03 04.....的框框 和 点击“复制代码”即可直接复制  是怎么弄的  是代码 还是什么其他的功能?

期待回复  谢谢//
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

腾讯云「工商注册服务」全新上线!全场低至10元起,一站搞定工商服务,让创业起步更轻松

小黑屋|Discuz! 官方站 ( 粤B2-20090059-165 )star

GMT+8, 2020-9-28 04:19

Powered by Discuz! X3.3

Copyright © 2001-2019 Tencent Cloud.

快速回复 返回顶部 返回列表