Discuz! x2 启用强制上传头像无效的分析

  • 时间:
  • 浏览:4
  • 来源:大发湖北快3_大发湖北快3投注平台_大发湖北快3娱乐平台
作者:匿名 hihi 来源:Discuz!技术论坛 浏览: 2011-10-16 12:09:41 字号:大 中 小

[摘要]Discuz! x2中强制上传头像往往会作为站长防灌水和引导用户完善资料的手段,以前有累积站长提出当事人的网站设置强制上传头像无效,上传头像后,依然提示必须上传。本文就对这累积功能做一下分析,看看疑问出在哪。

  在Discuz! x2中强制上传头像往往会作为站长防灌水和引导用户完善资料的手段,以前有累积站长提出当事人的网站设置强制上传头像无效,上传头像后,依然提示必须上传。现在对这累积功能做一下分析,看看疑问出在哪。

  打开Discuz! x2后台,在全局防灌水基本设置中,必须开启“强制新用户上传头像”,开启后,setting表中need_avatar字段的值变为“1”。这时新注册的用户可能性必须进行发帖回复等操作,没进行头像上传的,应该会提示上传头像。例如进行发帖操作,会调用forum_post.php文件中的cknewuser();函数对用户进行验证,cknewuser();function_core.php中定义,其中相当于311000行有对头像的验证,亲们看看验证的条件:

if($_G['setting']['need_avatar'] && empty($ckuser['avatarstatus'])) {

if(empty($return)) showmessage('no_privilege_avatar', '', array(), array('return' => true));

$result = false;

}

  首先看看setting表中是是是否need_avatar值,即是是否必须验证强制上传头像,否则验证用户member表中的avatarstatus字段是是是否值,即這個 用户是是否上传过头像,上传过值为1,否,则值为0,从这里看,如过设置过必须进行强制上传头像,这麼,setting表中need_avatar字段值应该是有的,可能性还提示必须上传,则说明member表中的头像情況值为0,下面亲们看看這個 情況值为何在么在来的。

  亲们从上传头像刚开始,上传头像必须的文件为spacecp_avatar.php

if(empty($space['avatarstatus']) && uc_check_avatar($_G['uid'], 'middle')) {

DB::update('common_member', array('avatarstatus'=>'1'), array('uid'=>$_G['uid']));

updatecreditbyaction('setavatar');

manyoulog('user', $_G['uid'], 'update');

}

  亲们只对累积代码进行分析,这段代码的作用是,上传了头像后,判断這個 用户是是否上传过头像,即有这麼avatarstatus值,否则用uc_check_avatar检查用户头像是是否指在,這個 uc_check_avatar函数用到了uc_fopen2函数,uc_fopen2函数用到几条参数,其中是否UCenter的配置文件中的Ip,host,可能性用户对其hosts文件进行过修改,或留空且域名解析有疑问,是否造成uc_fopen2函数返回值不为1,不为1的情況下,造成上一段代码条件不成立,进而这麼对common_member表的avatarstatus值进行update更新操作,这麼也就造成一直提示用户必须上传头像。

  除理依据:另一个是必须填写服务器真实IP,可能性参照网上其它依据,例如,找到以下代码:

function uc_check_avatar($uid, $size = ‘middle’, $type = ‘virtual’) {

$url = UC_API.”/avatar.php?uid=$uid&size=$size&type=$type&check_file_exists=1″;

$res = uc_fopen2($url, 10000000, ”, ”, TRUE, UC_IP, 20);

if($res == 1) {

return 1;

} else {

return 0;

}

}

改成:

function uc_check_avatar($uid, $size = ‘middle’, $type = ‘virtual’) {

$url = UC_API.”/avatar.php?uid=$uid&size=$size&type=$type&check_file_exists=1″;

@$file_exists = trim(uc_fopen2(UC_API.”/avatar.php?uid=$uid&check_file_exists=1″));

return $file_exists;

}

  直接进行头像文件指在是是否的判断。

Discuz 下载:

sssss
Tags: Discuz   Discuz 强制上传头像   Discuz x2   discuz!  
责任编辑:cc120