推荐应用

Discuz多国语言翻译

Discuz多国语言翻译

文库系统/文档系统

文库系统/文档系统

美食菜谱发布菜谱

美食菜谱发布菜谱

漫画阅读中心

漫画阅读中心

小说阅读中心

小说阅读中心

语言包切换基本文件

语言包切换基本文件

成语闯关

成语闯关

谷歌登錄Google登錄

谷歌登錄Google登錄

轻APP

轻APP

网上祭祀祭拜扫墓

网上祭祀祭拜扫墓

手机MP4视频上传

手机MP4视频上传

彩票开奖号码公布

彩票开奖号码公布

DZX泰语/傣语

DZX泰语/傣语

DZX日文版(日本语)

DZX日文版(日本语)

UCenter修改用户名无效的解决方法

发布于 2013-04-26
有些站长在UCenter修改用户名后,Discuz! 并没有显示出来效果,造成无效的原因主要是通信问题,如果你的站点显示通信成功且配置文件和UCenter应用管理当中的一致,则在UCenter修改用户信息后,会自动通知Discuz!修改相关用户信息的,如果修改之前,通信失败,修复通信后,可以到UCenter的通知列表里,点击发送通知,一样会修改Discuz! 的用户信息的。在UCenter里执行修改用户信息时,调用onedit函数

function onedit() {
   $uid = getgpc('uid');
   $status = 0;
   if(!$this->user['isfounder']) { //判断是否受保护用户
     $isprotected = $this->db->result_first("SELECT COUNT(*) FROM ".UC_DBTABLEPRE."protectedmembers WHERE uid = '$uid'");
     if($isprotected) {
        $this->message('user_edit_noperm');
     }
   }


   if($this->submitcheck()) { //判断是否提交更新
     $username = getgpc('username', 'P');
     $newusername = getgpc('newusername', 'P');
     $password = getgpc('password', 'P');
     $email = getgpc('email', 'P');
     $delavatar = getgpc('delavatar', 'P');
     $rmrecques = getgpc('rmrecques', 'P');
     $sqladd = '';
     if($username != $newusername) { //是否更新用户名
        if($_ENV['user']->get_user_by_username($newusername)) {
          $this->message('admin_user_exists');
        }
        $sqladd .= "username='$newusername', ";
        $this->load('note');
        $_ENV['note']->add('renameuser', 'uid='.$uid.'&oldusername='.urlencode($username).'&newusername='.
urlencode($newusername));//保存记录
     }
     if($password) { //密码是否更新
        $salt = substr(uniqid(rand()), 0, 6);
        $orgpassword = $password;
        $password = md5(md5($password).$salt);
        $sqladd .= "password='$password', salt='$salt', ";
        $this->load('note');
        $_ENV['note']->add('updatepw', 'username='.urlencode($username).'&password=');//保存记录
     }
     if($rmrecques) { //验证问答
        $sqladd .= "secques='', ";
     }
     if(!empty($delavatar)) { //删除头像
        $_ENV['user']->delete_useravatar($uid);
     }


     $this->db->query("UPDATE ".UC_DBTABLEPRE."members SET $sqladd email='$email' WHERE uid='$uid'");
     $status = $this->db->errno() ? -1 : 1;
   }    
   $user = $this->db->fetch_first("SELECT * FROM ".UC_DBTABLEPRE."members WHERE uid='$uid'");
   $user['bigavatar'] = '';
   $user['bigavatarreal'] = '';
   $this->view->assign('uid', $uid);
   $this->view->assign('user', $user);
   $this->view->assign('status', $status);
   $this->view->display('admin_user');
}

这个函数首先判断是该用户受保护,然后就是判断是否提交了修改,当提交后,判断用户名是否修改,密码是否做了修改,验证问题及头像等是否修改,如果做了修改,调用add()方法在notelist表保存更新内容,当修改成功后,二次调用send方法时,会自动向各个UCenter应用发出执行命令,更新对应用户的信息,并保存通知,如果不成功,提示通知失败,并指向链接,手动通知。

扫一扫添加有偿QQ
扫一扫添加微信客服