本帖最后由 dongdong0925 于 2011-5-28 20:36 编辑
x2的防灌水设置在后台-》全局-》防灌水设置-》防灌水基本设置,如图。
防灌水设置是在用户进行发表的操作时进行的判断,这里以发布帖子进行分析。
点击发布帖子的按钮会进入到source\module\forum\forum_post.php文件中。
在这个文件的15行附近,可以找到下面这句代码。这句代码就是进行防灌水的判断,这个函数的定义在source\function\function_core.php文件中,具体代码如下。- function cknewuser($return=0) {
- global $_G;
- $result = true;
- if(!$_G['uid']) return true;
- if(checkperm('disablepostctrl')) {
- return $result;
- }
- $ckuser = $_G['member'];
- if($_G['setting']['newbiespan'] && $_G['timestamp']-$ckuser['regdate']<$_G['setting']['newbiespan']*60) {
- if(empty($return)) showmessage('no_privilege_newbiespan', '', array('newbiespan' => $_G['setting']['newbiespan']), array('return' => true));
- $result = false;
- }
- if($_G['setting']['need_avatar'] && empty($ckuser['avatarstatus'])) {
- if(empty($return)) showmessage('no_privilege_avatar', '', array(), array('return' => true));
- $result = false;
- }
- if($_G['setting']['need_email'] && empty($ckuser['emailstatus'])) {
- if(empty($return)) showmessage('no_privilege_email', '', array(), array('return' => true));
- $result = false;
- }
- if($_G['setting']['need_friendnum']) {
- space_merge($ckuser, 'count');
- if($ckuser['friends'] < $_G['setting']['need_friendnum']) {
- if(empty($return)) showmessage('no_privilege_friendnum', '', array('friendnum' => $_G['setting']['need_friendnum']), array('return' => true));
- $result = false;
- }
- }
- return $result;
- }
复制代码 下面单独分析下这个函数。- if(!$_G['uid']) return true;
复制代码 如果是游客的话不进行后面防灌水的判断。- if(checkperm('disablepostctrl')) {
- return $result;
- }
复制代码 判断该用户所在的用户组发表的时候是否不受限制,如果不受限制则不进行后续防灌水的判断。发表是否受限制的设置在后台-》用户-》用户组下,如图。
- if($_G['setting']['newbiespan'] && $_G['timestamp']-$ckuser['regdate']<$_G['setting']['newbiespan']*60) {
- if(empty($return)) showmessage('no_privilege_newbiespan', '', array('newbiespan' => $_G['setting']['newbiespan']), array('return' => true));
- $result = false;
- }
复制代码 此段代码为判断该用户是否满足见习时间的条件,如不满足则提示类似下图的信息。
见习时间的设置在后台-》全局-》注册与访问-》访问控制下,如图。
- if($_G['setting']['need_avatar'] && empty($ckuser['avatarstatus'])) {
- if(empty($return)) showmessage('no_privilege_avatar', '', array(), array('return' => true));
- $result = false;
- }
复制代码 此段代码为判断用户是否上传了头像。此条件在后台防灌水设置里开启了强制新用户上传头像后进行判断。- if($_G['setting']['need_email'] && empty($ckuser['emailstatus'])) {
- if(empty($return)) showmessage('no_privilege_email', '', array(), array('return' => true));
- $result = false;
- }
复制代码 此段代码为判断用户是否验证激活了邮箱。此条件在后台防灌水设置里开启了强制新用户验证激活邮箱后进行判断。- if($_G['setting']['need_friendnum']) {
- space_merge($ckuser, 'count');
- if($ckuser['friends'] < $_G['setting']['need_friendnum']) {
- if(empty($return)) showmessage('no_privilege_friendnum', '', array('friendnum' => $_G['setting']['need_friendnum']), array('return' => true));
- $result = false;
- }
- }
复制代码 此段代码为判断用户的好友数是否满足防灌水设置里设置的强制新用户好友个数。此条件在后台防灌水设置里设置强制新用户好友个数后进行判断。
|