解决ShopEx云登录 登录成功后返回无反应错误的方法

云登录返回时ShopEx系统会调用core\shop\controller\ctl.passport.php下的方法other_login_verify代码如下

function other_login_verify(){
        $sign = $_GET['sign'];
        unset($_GET['passport-other_login_verify_html']);
        unset($_GET['passport-1-other_login_verify_html']);
        unset($_GET['sign']);
        $make_sign = $this->get_ce_sign($_GET,$this-&system->getConf('certificate.token'));

        if($make_sign!=$sign){
            echo "sign is error";
            exit;
        }

        $account = $this-&system->loadModel('member/account');
        //查询sdb_trust_login是否之前登录过,首次登录会插入会员信息,不是首次就读取
        $result_m = $account->createotherlogin($_GET);
        if($result_m['redirect_url']){
            echo "";             exit;         }else{             echo "";         }     }

程序流程是先检查sdb_trust_login表,如果没有用户信息说明是第一次登录,系统就会读取系统后台设置默认的会员信息,比如等级、默认货币单位等等,然后结合信任登录返回会员信息(如昵称、邮箱信息等等)一起在sdb_members表里生成新的一条会员记录。如果有用户信息说明不是第一次登录,系统会读取之前导入的会员记录。

问题出在如果你删除了信任登录会员,这里的删除指的是永久删除,由于程序bug,sdb_trust_login表的信息没有被一起删除,如果被删除会员下次又用登录,系统会认为该会员不是第一次登录,直接读取已经被删除不存在的会员信息,就会出现,云登录成功返回后,会员没有登录网站的尴尬。

解决方法,找到sdb_members表中删除云登录会员的id,然后删除sdb_trust_login表内对应的信息即可。

不过我建议不要删除云登录,信任登录的会员信息,以免有不必要的麻烦。

发表评论

电子邮件地址不会被公开。 必填项已用*标注