引用:
原帖由 dbplus03 于 2008-4-14 14:23 发表 
楼上的,能不能共享一下方法?
我定义了一个常量 UC_USERDB,判断应用端是否满足 是否存在用户数据库表 {$tablepre}members ,
且满足用户表中有uid, username这两个字段
且在config.inc.php 中设置了 $dbhost, $dbuser, $dbpw, $dbname, $pconnect
如果满足以上情况,可以直接同步
这时,如果应用中登录用户没有“激活”本应用,即 $member = $db->fetch_array($query) 返回的是空,那么提示用户激活,
激活是自动进行还是用户手动进行那就是你程序的事情了。
这时,你也许会问: 我如何获取到UC中的username,passwd,email信息?
你就只需要把$get打印出来就可以了,如果这些基本信息不满足你的要求
呵呵,那就修改 ucenter中的文件control/user.php 中的control::onsynlogin()
比如我需要传递的email,password ,我就添加了
复制内容到剪贴板
代码:
code='.urlencode($this->authcode('action=synlogin&username='.$this->user['username'].'&uid='.$this->user['uid'].'&password='.$this->user['password'].'&email='.$this->user['email']."&time=".$this->time, 'ENCODE', $app['authkey'])以下代码是我根据我自己的需要进行修改后的,朋友你可以参考。。。。
复制内容到剪贴板
代码:
//应用端 ./api/uc.php文件
elseif($action == 'synlogin' && $_GET['time'] == $get['time']) {
!API_SYNLOGIN && exit(API_RETURN_FORBIDDEN);
//同步登录 API 接口
if(defined('UC_USERDB') && UC_USERDB ==1) //如果有应用程序端用户
{
include './include/db_mysql.class.php';
$db = new dbstuff;
$db->connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect);
unset($dbhost, $dbuser, $dbpw, $dbname, $pconnect);
$uid = intval($get['uid']);
$query = $db->query("SELECT uid, username,email FROM {$tablepre}members WHERE uid='$uid'");
if($member = $db->fetch_array($query)) {
header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
dsetcookie('xxx_auth', authcode($member['uid']."\t".$member['username']."\t".$member['email'], 'ENCODE'), 86400 * 365);
}
}else //如果没有应用端用户
{
if(!empty($get['uid'])&&!empty($get['username']))
{
header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
dsetcookie('xxx_auth', authcode($get['uid']."\t".$get['username']."\t".$get['email'], 'ENCODE'), 86400 * 365);
}
}
}要修改程序,你得对UC的代码有一定的了解,否则,建议不要修改。。
修改有风险,处理时需谨慎。
[
本帖最后由 zhy_aid_cn 于 2008-4-15 17:28 编辑 ]