discuz UCenter对接遇到问题总汇
2011-12-27 11:32
288 查看
1、登录用户需激活问题 discuz/api/uc.php
问题原因:与UCenter用户对接,网站用户首次登录论坛,需要先注册用户到UCenter,api写入数据至Ucenter用户表,数据没有立即发送到discuz用户表,当请求discuz登录时,discuz会要求激话,而导致直接登录失败。解决方式:在用户请求登录时(synlogin),用户不在了,则请求ucenter用户表查询用户,再写入到discuz
2、修改密码能及时同步问题
discuz修改密码后将修改密码和email的信息通过ucclient传递给ucenter,ucenter在收到消息后将消息存入cdb_uc_notelist表,而后从cdb_uc_notelist取出一条close为0的记录,逐一向各个应用发送修改密码的通知。当用户登录ucenter才会向应用发送指令,
解决方法:
uc_client\client.php文件中的
uc_server\control\user.php文件中的 onedit()方法中的
uc_server\model\note.php文件中的send()方法中注释如下两行:
/*** * 激活功能 */ function synlogin($get, $post) { global $_G; if(!API_SYNLOGIN) { return API_RETURN_FORBIDDEN; } header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"'); $cookietime = 31536000; $uid = intval($get['uid']); $query = DB::query("SELECT uid, username, password FROM ".DB::table('common_member')." WHERE uid='$uid'"); if($member = DB::fetch($query)) { dsetcookie('auth', authcode("$member[password]\t$member[uid]", 'ENCODE'), $cookietime); }else{ //用户不存在 从UC里取用户 $username = $get['username']; $query = DB::query("SELECT uid,username,password,email FROM ".DB::table('ucenter_members')." WHERE username='$username'"); $member = DB::fetch($query); $password = $member['password']; $email = $member['email']; $ip = $_SERVER['REMOTE_ADDR']; $time = time(); $userdata = array( 'uid' => $uid, 'username' => $username, 'password' => $password, 'email' => $email, 'adminid' => 0, 'groupid' => 10, 'regdate' => $time, 'credits' => 0, 'timeoffset' => 9999 ); DB::insert('common_member', $userdata); $status_data = array( 'uid' => $uid, 'regip' => $ip, 'lastip' => $ip, 'lastvisit' => $time, 'lastactivity' => $time, 'lastpost' => 0, 'lastsendmail' => 0, ); DB::insert('common_member_status', $status_data); DB::insert('common_member_profile', array('uid' => $uid)); DB::insert('common_member_field_forum', array('uid' => $uid)); DB::insert('common_member_field_home', array('uid' => $uid)); DB::insert('common_member_count', array('uid' => $uid)); DB::query("UPDATE ".DB::table('common_setting')." SET svalue='$username' WHERE skey='lastmember'"); $query = DB::query("SELECT uid, username, password FROM ".DB::table('common_member')." WHERE uid='$uid'"); if($member = DB::fetch($query)) { dsetcookie('auth', authcode("$member[password]\t$member[uid]", 'ENCODE'), $cookietime); } } }
问题原因:与UCenter用户对接,网站用户首次登录论坛,需要先注册用户到UCenter,api写入数据至Ucenter用户表,数据没有立即发送到discuz用户表,当请求discuz登录时,discuz会要求激话,而导致直接登录失败。解决方式:在用户请求登录时(synlogin),用户不在了,则请求ucenter用户表查询用户,再写入到discuz
2、修改密码能及时同步问题
discuz修改密码后将修改密码和email的信息通过ucclient传递给ucenter,ucenter在收到消息后将消息存入cdb_uc_notelist表,而后从cdb_uc_notelist取出一条close为0的记录,逐一向各个应用发送修改密码的通知。当用户登录ucenter才会向应用发送指令,
解决方法:
uc_client\client.php文件中的
function uc_user_edit($username, $oldpw, $newpw, $email, $ignoreoldpw = 0, $questionid = '', $answer = '') { return call_user_func(UC_API_FUNC, 'user', 'edit', array('username'=>$username, 'oldpw'=>$oldpw, 'newpw'=>$newpw, 'email'=>$email, 'ignoreoldpw'=>$ignoreoldpw, 'questionid'=>$questionid, 'answer'=>$answer)); } //改为 function uc_user_edit($username, $oldpw, $newpw, $email, $ignoreoldpw = 0, $questionid = '', $answer = '') { return call_user_func('uc_api_post', 'user', 'edit', array('username'=>$username, 'oldpw'=>$oldpw, 'newpw'=>$newpw, 'email'=>$email, 'ignoreoldpw'=>$ignoreoldpw, 'questionid'=>$questionid, 'answer'=>$answer)); }
uc_server\control\user.php文件中的 onedit()方法中的
01.$_ENV['note']->add('updatepw', 'username='.urlencode($username).'&password='); //改为 $_ENV['note']->add('updatepw', 'username='.urlencode($username).'&password='.urlencode($newpw).'&email='.urlencode($email));
uc_server\model\note.php文件中的send()方法中注释如下两行:
$closenote = FALSE; break;
相关文章推荐
- phpcms的phpsso与discuz的UCenter的联调时遇到的问题
- Discuz论坛2.5 升级到PHP MySQL新版遇到的问题
- Discuz论坛2.5 升级到PHP MySQL新版遇到的问题
- 对接alipay支付遇到的问题
- Discuz论坛2.5 升级到PHP MySQL新版遇到的问题
- Discuz论坛2.5 升级到PHP MySQL新版遇到的问题
- mysql底版本转高版本所遇到的问题总汇
- 装discuz!NT遇到的一系列问题的解决方法。
- discuz中头像上传错误和ucenter连接失败问题的解决方法
- 论坛升至discuz5.0时遇到了这个问题--交易手续费设置有误,请返回修改
- 对接海关总署电子口岸时遇到清单加密问题的总结
- 对接钉钉接口可能遇到的问题 50004 60011
- 整合discuz ecshop ucenter 通讯异常问题
- discuz2.0升级到3.0遇到问题解决方案
- discuz3.2版本ucenter用户管理中心登陆问题解决办法
- discuz-ucenter-api-for-java 中文乱码问题
- 第一次做WebService对接遇到的问题
- Jpa项目使用中遇到的问题总汇——更新中
- 对接短信遇到的编码问题
- Discuz论坛2.5 升级到PHP MySQL新版遇到的问题