论坛风格切换
  • 2415阅读
  • 5回复

pw用户中心BUG和建议收集 [复制链接]

上一主题 下一主题
离线rickyleo
 

发帖
315
金币
0
威望
99
只看楼主 倒序阅读 使用道具 楼主  发表于: 2012-01-10

1、客户端添加创始人帐号的时候 这个应该往主站插一条新的用户数据,现在没有导致从库用户表有这个帐号主库用户表没有这个帐号导致前台登录提示没有该帐号。客户端用户管理添加新用户的情况下是正常的,就是创始人管理添加创始人的时候有以上问题

2、待优化bug:客户端的创始人或者有用户编辑管理权限的帐号登录后台,可以修改服务端在客户端登录过的系统组权限帐号的密码,这个应该在程序上进行一下限制。在客户端后台修改完服务端的帐号密码后可以顺利在服务端登录操作,甚至可以登录服务端后台进行进一步的操作。这个让站长在运营上会很头疼的

以上BUG已提交测试



离线rickyleo

发帖
315
金币
0
威望
99
只看该作者 沙发  发表于: 2012-01-10
第1个BUG临时解决方案:
打开admin/manager.php文件,找到:
函数:
  1. function pwUpdateManager($username,$password){
  2.     ……
  3. }
替换成:
  1. function pwUpdateManager($username,$password){
  2.     global $db;
  3.     require_once (R_P . 'uc_client/uc_client.php');
  4.     
  5.     $userService = L::loadclass('UserService', 'user'); /* @var $userService PW_UserService */
  6.     $rt = $userService->getByUserName($username);
  7.     if (!$rt['uid']) {
  8.         global $timestamp,$onlineip;
  9.         
  10.         $mainFields = array(
  11.             'username'    => $username,
  12.             'password'    => $password,
  13.             'groupid'    => 3,
  14.             'memberid'    => 8,
  15.             'regdate'    => $timestamp
  16.         );
  17.         
  18.         $memberDataFields = array(
  19.             'postnum'    => 0,
  20.             'lastvisit'    => $timestamp,
  21.             'thisvisit'    => $timestamp,
  22.             'onlineip'    => $onlineip
  23.         );
  24.         
  25.         if ($winduid = uc_user_register($username, $password, $username.'@local.com')){
  26.             $mainFields['uid'] = $winduid;
  27.             $userService->add($mainFields, $memberDataFields);
  28.         }else{
  29.             adminmsg('创始人添加失败!');
  30.         }
  31.     } else {
  32.         $status = uc_user_edit($rt['uid'], $rt['username'], '', $password);
  33.         if ($status == '1'){
  34.             $userService->update($rt['uid'], array('groupid'=>3, 'password'=>$password));
  35.         }
  36.     }
  37.     admincheck($rt['uid'],$username,'3',$rt['groups'],'update');
  38. }
因为 后台添加创始人的时候,没有提供添加email,所以构造了一个。
另外对修改创始人的时候,将修改创始人用户名的input框进行了disabled掉。否则用户中心会有问题。修改如下:
打开客户端template/admin/manager.htm文件
找到:
$action=='edit'
里边的
  1. <input type="text" class="input input_wa" name="username" value="$oldname" />
替换成:
  1. <input type="text" disabled="disabled" class="input input_wa"  value="$oldname" />
  2. <input type="hidden" name="username" value="$oldname" />

现在就客户端后台添加创始人和编辑创始人的操作,会将操作同步到服务端这个帐号的信息。

离线rickyleo

发帖
315
金币
0
威望
99
只看该作者 板凳  发表于: 2012-01-10
第2个BUG临时解决思路:
目前实现:客户端后台用户管理地方,不能编辑服务端的系统组用户的密码。
但是,还有一个衍生出来的问题就是,客户端B的系统组用户在客户端C登录后,客户端C就可以在后台编辑这个帐号的密码了。达到可以控制客户端B这个帐号的权限了…以上问题除非是在站点中了木马病毒情况下 就可以通过这种方式修改服务端或者其他客户端的帐号密码达到一定的权限,引起更大的破坏。正常情况下,运营方面需要进行监督一下。
打开uc_client/model/user.php文件
将所有的
  1. uid,username,password,
替换成:
  1. uid,username,groupid,password,
打开uc_client/control/user.php文件,找到:
  1. return array('uid' => $user['uid'], 'username' => $user['username'], 'email' => $user['email']);
替换成:
  1. return array('uid' => $user['uid'], 'username' => $user['username'], 'groupid'    =>    $user['groupid'], 'email' => $user['email']);
打开admin/usermanager.php,找到:
  1. S::gp(array('uid'),'GP',2);
下方添加代码:
  1. //获取服务端用户信息 by rickyleo
  2.         $serverUserInfo = array();
  3.         $serverPwdAble = '';
  4.         require_once R_P.'uc_client/uc_client.php';
  5.         $serverUserInfo = uc_user_get($uid, '1');
  6.         $serverPwdAble = ($serverUserInfo['groupid'] == '3') ? ' disabled="disabled" value="******"' : '';
  7.         $pwdDisableReason = $serverPwdAble ? '<font color=red> 该帐号是用户中心服务端系统组用户.客户端无法编辑该帐号的密码!请到服务端站点后台进行修改密码!</font>' : '';
  8.         //end
打开template/admin/usermanager.htm文件,找到:
  1. <tr class="tr1 vt">
  2.         <td class="td1">新密码</td>
  3.         <td class="td2"><input type="text" class="input input_wa" name="password" value='' /></td>
  4.     <td class="td2"><div class="help_a">输入想要替换的密码。<font color=blue>如不更改请留空</font></div></td></tr>
  5.     <tr class="tr1 vt">
  6.         <td class="td1">确认密码</td>
  7.         <td class="td2"><input type="text" class="input input_wa" name="check_pwd" /></td>
  8.         <td class="td2"><div class="help_a">再次输入密码。<font color=blue>如不更改请留空</font></div></td>
  9.     </tr>
替换成:
  1. <tr class="tr1 vt">
  2.         <td class="td1">新密码</td>
  3.         <td class="td2"><input type="text" class="input input_wa" {$serverPwdAble} name="password" value='' />{$pwdDisableReason}</td>
  4.     <td class="td2"><div class="help_a">输入想要替换的密码。<font color=blue>如不更改请留空</font></div></td></tr>
  5.     <tr class="tr1 vt">
  6.         <td class="td1">确认密码</td>
  7.         <td class="td2"><input type="text" class="input input_wa" {$serverPwdAble} name="check_pwd" /></td>
  8.         <td class="td2"><div class="help_a">再次输入密码。<font color=blue>如不更改请留空</font></div></td>
  9.     </tr>

客户端后台编辑在服务端是系统组用户的帐号时,密码输入框是disabled并且显示*号,并给出提示。效果图如下:








1条评分金币+20
mgarfield 金币 +20 给你个好评哦亲~ 2012-01-10
离线mgarfield

发帖
520
金币
0
威望
62
只看该作者 地板  发表于: 2012-01-10
给你个好评哦亲~
离线rickyleo

发帖
315
金币
0
威望
99
只看该作者 4楼 发表于: 2012-01-12
用户中心头像同步的问题:
用户中心有必要将头像默认同步吗???
我觉得 最后后台控制一下 是否默认同步
现在默认同步的一个问题就出现了 不严谨
比如A是主站 B是从站 帐号xxx在A和B都有自定义头像 现在都是同步的
但是如果说帐号在论坛A将头像改成了系统头像 那么 A和B的系统头像的图片附件肯定要同步 否则就有可能A换了系统头像 B就显示XXX了(因为这个系统头像图片在B是不存在的)。

我的理解是 用户中心只要将主要的一些用户信息实现同步就好了
比如帐号UID  帐号名  密码 邮箱 强制同步
头像、积分、勋章、签名这些都可选同步 有些甚至就直接不同步好了

本帖提到的人: @铁皮
离线瓜牛

发帖
85
金币
0
威望
3
只看该作者 5楼 发表于: 2012-01-12
用户中心开启后从站用户前台无法修改密码修正:
修改文件 :/u/require/profile/info_safe.php
找到:unset($upmemdata,$upmeminfo); 上面加上
  1. //从站密码更新修正
  2. $info['password'] = md5($propwd);
  3. $info['email'] = $proemail;
  4. $ucuser = L::loadClass('Ucuser', 'user');
  5. list($ucstatus, $errmsg) = $ucuser->edit($winduid, $windid, $info);
  6. if ($ucstatus < 0) {
  7. Showmsg($errmsg);
  8. }


产生原因是没有调用用户中心函数。导致更改的是从站库,而未更新总站。
快速回复
限100 字节
批量上传需要先选择文件,再选择上传
 
提到某人:
选择好友
上一个 下一个