uc同步登陆同步退出

几乎每个应用在整合UC的时候都会遇到无法同步登陆同步退出的情况,今天分析下原因

首先我们的项目会将uc_client这个文件夹原封不动的拷贝到项目根目录,

public function inteLogin($loginname,$password) {
$this->_initUC();
if (true === $this->uc_Integration) {
if (true === XValid::isEmail($loginname)) {
$logintype = 2;
}
else {
$logintype = 0;
}
if (UC_CHARSET != OESOFT_CHARSET) {
$uc_loginname = XHandle::utfToGbk($loginname);
}
else {
$uc_loginname = $loginname;
}
$this->ucinfo = uc_user_login($uc_loginname,$password,$logintype,0);
if ($this->ucinfo[0] >0) {
//同步登陆
//print_r($this->ucinfo);
echo uc_user_synlogin($this->ucinfo[0]);

//如下是登陆本系统的逻辑
$this->_loginUcToLove($password);
}
}
}
我只截取了一段代码,代码是先调用client.php的uc_user_login方法,然后判断返回的uid是否存在,存在的话就echo uc_user_synlogin($this->ucinfo[0]);这样就实现了同步登陆。但是你也许会遇到一个问题,就是还是无法同步登陆,我们看代码

function uc_user_synlogin($uid) {
    $uid = intval($uid);
    if(@include UC_ROOT.'./data/cache/apps.php') {
        if(count($_CACHE['apps']) > 1) {
            $return = uc_api_post('user', 'synlogin', array('uid'=>$uid));
        } else {
            $return = '';
        }
    }
    return $return;
}

发现count($_CACHE['apps']) > 1,也就是在apps.php中的apps数组必须大于1才会调佣,否则不调用,这里我们需要注意的是你的应用里面如果是在建立之前拷贝的uc_client代码,则这个不会大于1,没关系,我们拷贝过去就行了。apps.php

同步退出也是同理的,因为他这个是发送js实现同步退出,因此

public function inteLogout() {
$this->_initUC();
if (true === $this->uc_Integration) {
echo uc_user_synlogout();
}
}

也要记得上面是echo,而不是Return



我们在做应用开发的时候,包含了两个文件,一个当然是配置文件了,不管你是在后台填写的还是直接写到文件中的,包含进来就行了,然后就是client.php,client.php是处理程式。

本文档的代码引用的action.passport.php以及model.uc.php中的代码如需完整的,打开他们来看下就知道了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值