discuz admin.php换名,discuz在UCenter修改用户名后无效的解决办法

c58265e72272c8461c5092b8cc4f6095.gif

帝国CMS技术互助群:540946827 一帮大神带你装逼带你飞!还有漂亮的妹纸陪你玩哦!

a0f609b288c7de88131b6f6ba37c81b3.png

有时候我们发现在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'] = 'avatar.php?uid='.%24uid.'&size=big'; $user['bigavatarreal'] = 'avatar.php?uid='.%24uid.'&size=big&type=real'; $this->view->assign('uid', $uid); $this->view->assign('user', $user); $this->view->assign('status', $status); $this->view->display('admin_user');}

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

大家如果遇到这样的问题就可以按照以上方法解决!

如对本文有疑问,请提交到交流社区,广大热心网友会为你解答!! 点击进入社区

打赏一下,我们会为大家提供更多优质资源!

91e7dcaaa1a0bd41a6bdf0bdc709f045.png

您的打赏将全部用来搜集更多优质资源!

weipayimg.jpg

扫码打赏,你说多少就多少

cc16f7477eabc8420c6a2b3eb63a44b8.png

cbb949506e1f1b1153ebda7bc4c213c4.png

打开微信扫一扫,即可进行扫码打赏哦

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值