备案权重域名预定

 找回密碼
 加入我們

關於discuz在UCenter中修改了用戶名未生成的問題 還是顯示原來的用戶名

[複製鏈接]
admin 發表於 2016-7-11 00:05:41 | 顯示全部樓層 |閱讀模式
這應該是因為UCenter通信失敗 需要在UCenter設置中將網址和網站服務器IP地址填寫正確

如果還出現問題,網上有人提供了下面這種解決辦法,如果你的站點顯示通信成功且配置文件和UCenter應用管理當中的一致,則在UCenter修改用戶信息後,會自動通知Discuz!修改相關用戶信息的,如果修改之前,通信失敗,修復通信後,可以到UCenter的通知列表裡,點擊發送通知,一樣會修改Discuz! 的用戶信息的。在UCenter裡執行修改用戶信息時,調用onedit函數

  1. function onedit() {
  2.           $uid = getgpc('uid');
  3.           $status = 0;
  4.           if(!$this->user['isfounder']) {    //判斷是否受保護用戶
  5.                    $isprotected = $this->db->result_first("SELECT COUNT(*) FROM ".UC_DBTABLEPRE."protectedmembers WHERE uid = '$uid'");
  6.                    if($isprotected) {
  7.                              $this->message('user_edit_noperm');
  8.                    }
  9.           }

  10.           if($this->submitcheck()) {    //判斷是否提交更新
  11.                    $username = getgpc('username', 'P');
  12.                    $newusername = getgpc('newusername', 'P');
  13.                    $password = getgpc('password', 'P');
  14.                    $email = getgpc('email', 'P');
  15.                    $delavatar = getgpc('delavatar', 'P');
  16.                    $rmrecques = getgpc('rmrecques', 'P');
  17.                    $sqladd = '';
  18.                    if($username != $newusername) {    //是否更新用戶名
  19.                              if($_ENV['user']->get_user_by_username($newusername)) {
  20.                                       $this->message('admin_user_exists');
  21.                              }
  22.                              $sqladd .= "username='$newusername', ";
  23.                              $this->load('note');
  24.                              $_ENV['note']->add('renameuser', 'uid='.$uid.'&oldusername='.urlencode($username).'&newusername='.urlencode($newusername));//保存記錄
  25.                    }
  26.                    if($password) {    //密碼是否更新
  27.                              $salt = substr(uniqid(rand()), 0, 6);
  28.                              $orgpassword = $password;
  29.                              $password = md5(md5($password).$salt);
  30.                              $sqladd .= "password='$password', salt='$salt', ";
  31.                              $this->load('note');
  32.                              $_ENV['note']->add('updatepw', 'username='.urlencode($username).'&password=');//保存記錄
  33.                    }
  34.                    if($rmrecques) {   //驗證問答
  35.                              $sqladd .= "secques='', ";
  36.                    }
  37.                    if(!empty($delavatar)) {    //刪除頭像
  38.                              $_ENV['user']->delete_useravatar($uid);
  39.                    }

  40.                    $this->db->query("UPDATE ".UC_DBTABLEPRE."members SET $sqladd email='$email' WHERE uid='$uid'");
  41.                    $status = $this->db->errno() ? -1 : 1;
  42.           }               
  43.           $user = $this->db->fetch_first("SELECT * FROM ".UC_DBTABLEPRE."members WHERE uid='$uid'");
  44.           $user['bigavatar'] = '<img src="avatar.php?uid='.$uid.'&size=big">';
  45.           $user['bigavatarreal'] = '<img src="avatar.php?uid='.$uid.'&size=big&type=real">';
  46.           $this->view->assign('uid', $uid);
  47.           $this->view->assign('user', $user);
  48.           $this->view->assign('status', $status);
  49.           $this->view->display('admin_user');
  50. }
複製代碼
這個函數首先判斷是該用戶受保護,然後就是判斷是否提交了修改,當提交後,判斷用戶名是否修改,密碼是否做了修改,驗證問題及頭像等是否修改,如果做了修改,調用add()方法在notelist表保存更新內容,當修改成功後,二次調用send方法時,會自動向各個UCenter應用發出執行命令,更新對應用戶的信息,並保存通知,如果不成功,提示通知失敗,並指向鏈接,手動通知。

此外還有人提供了直接在數據庫中修改pre_common_member表
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 加入我們

本版積分規則

备案权重域名预定

4um點擊跨境網編創業社區

GMT+8, 2024-11-23 18:47

By DZ X3.5

QQ

快速回復 返回頂部 返回列表