有些站長在 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'] = '<img src="avatar.php?uid='.$uid.'&size=big">';
- $user['bigavatarreal'] = '<img src="avatar.php?uid='.$uid.'&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 應用發出執行命令,更新對應使用者的資訊,並儲存通知,如果不成功,提示通知失敗,並指向連結,手動通知。