uc的整合策略中,是必须先在论坛上登录,才会调用同步接口,所以,在论坛上首次注册会员,并不能同步到其它应用网站.需要注册后,先退出登录,再重新登录论坛,其它应用才会自动同步登录,存在明显缺陷.
解决办法为修改系统文件.
一,
修改论坛目录中对应的,\uc_client\model\user.php 中的function add_user 函数
把大约131行的
$salt = substr(uniqid(rand()), -6);
整体替换为
$salt = substr(uniqid(rand()), -6);
$password2 = md5($password);
然后,在return $uid;
的上面增加下面这段代码
$time2=date('Y-m-d H:i:s',$this->base->time);
$this->db->query("INSERT INTO admin_book.hbdx_users SET uc_id='$uid',user_mail='$email',user_name='$username',user_group='同步注册会员',user_displayname='$username',registerdate='$time2',user_pass='$password2',user_integration='10'");
/注意,其中,admin_book 表示book网站对应的数据库名,hbdx_users 表示表名,可以相应修改为正在使用的.
二,同时,要修改论坛目录中的.
\source\class\class_member.php
找到大约926行的
$extra = array(
'showid' => 'succeedmessage',
'extrajs' => '<script type="text/javascript">'.
'setTimeout("window.location.href =\''.$href.'\';", 3000);'.
'$(\'succeedmessage_href\').href = \''.$href.'\';'.
'$(\'main_message\').style.display = \'none\';'.
'$(\'main_succeed\').style.display = \'\';'.
'$(\'succeedlocation\').innerHTML = \''.lang('message', $locationmessage).'\';'.
'</script>',
'striptags' => false,
);
//整体替换为
$ucsynlogin = '';
if($_G['setting']['allowsynlogin']) {
loaducenter();
$ucsynlogin = uc_user_synlogin($_G['uid']);
}
$extra = array(
'showid' => 'succeedmessage',
'extrajs' => '<script type="text/javascript">'.
'setTimeout("window.location.href =\''.$href.'\';", '.$refreshtime.');'.
'$(\'succeedmessage_href\').href = \''.$href.'\';'.
'$(\'main_message\').style.display = \'none\';'.
'$(\'main_succeed\').style.display = \'\';'.
'$(\'succeedlocation\').innerHTML = \''.lang('message', $locationmessage).'\';'.
'</script>'.$ucsynlogin,
'striptags' => false,
);
//其实主要是在后面增加了这一句
//.$ucsynlogin ,从而实现论坛上初次注册的会员,就可以直接同步到另一站,不需要退出再登录一次.