php 第三方登录

6 篇文章 0 订阅
public function actionAddoauthlogin()
    {
        $arr['open_id'] = $_POST['open_id'];
        $arr['access_token'] = $_POST['access_token'];
        $arr['oauth_name'] = $_POST['oauth_name'];
        $arr['oauth_iconurl'] = $_POST['oauth_iconurl']; //头像
        $arr['type'] = (int) $_POST['type'];
        $arr['create_time'] = time();

        if (empty($arr['open_id']) || empty($arr['type'])) {
            $this->ajaxMessage(1,'参数错误');
        }
        if (!in_array($arr['type'],array(1,2,3))) {
            $this->ajaxMessage(1,'参数错误');
        }
        //判断第三方表中是否已经存在
        $mobile = $arr['type'] . '_' . $arr['open_id']; //手机号和密码默认
        $password = 'dalian_' . $arr['type'] . '_' . $arr['open_id'];

        $loginsModel = new StdOauthLogin();
        $userid = $loginsModel->isBindingByOpenid($arr['open_id'],$arr['type']);

        if (empty($userid)) {//不存在,则需要入库
            //将需要事务处理的操作放进try里
            $transaction = Yii::app()->db->beginTransaction();
            try {
                //存入user表数据 
                $login_arr['nickname'] = $arr['oauth_name'];
                $login_arr['avatar'] = $arr['oauth_iconurl'];
                $adduserid = $loginsModel->addUser($mobile,$password,$login_arr);
                if ($adduserid) {
                    //环信
                    //$passwords = $usersmodel->getUserPassword($adduserid);
                    //$response = Yii::app()->easemob->accreditRegister(array('username' => 'dalian_' . $adduserid,'password' => $passwords));
                    //存入第三方登录表
                    $arr['uid'] = $adduserid;
                    $loginsModel->attributes = $arr;
                    $loginsModel->save(false);

                    $userinfo = $loginsModel->login($mobile,$password); //登录
                }
                $transaction->commit(); //提交事务会真正的执行数据库操作
            } catch (Exception $e) {
                $transaction->rollback(); //如果操作失败, 数据回滚
                $this->ajaxMessage(-1,'登录失败,请重试1');
            }
        } else {
            $userinfo = $loginsModel->login($mobile,$password); //登录
            if (!$userinfo) {
                $this->ajaxMessage(-1,'登录失败,请重试2');
            }
        }
        $this->ajaxMessage(0,'登录成功',$userinfo);
    }

 public function isBindingByOpenid($open_id,$type)
    {
        $sql = "select uid from std_oauth_login where open_id='{$open_id}' and type={$type}";
        $rs = Yii::app()->db->createCommand($sql)->queryScalar();
        return $rs ? $rs : '';
    }

public function addUser($mobile,$password,$login_arr = array())
    {
        $Std = new StdStudent();
        $salt = Common::randomkeys(4);
        
        $Std->mobile = $mobile;
        $Std->password = md5($password . $salt);
        $Std->salt = $salt;
       // $Std->create_time = time();
        $Std->status = 2; // 用户账号注册时候的默认状态
        
        if (!empty($login_arr)) {//第三方
            $Std->nickname = $login_arr['nickname'];
            $Std->avatar = $login_arr['avatar'];
        } else {
            $Std->nickname = $name;    // 随机生成成长号
        }


        if ($Std->save(false)) {
            return $Std->save(false) ? $Std->getPrimaryKey() : 0;
        }
    }

public function login($account,$password)
    {


        $sql = "select uid,mobile,password,salt,nickname,avatar,login_time  
                from std_student  
                where mobile='{$account}' and status=2";
        $userInfo = Yii::app()->db->createCommand($sql)->queryRow();


        // 判断是否登录成功
        if ($userInfo['password'] == md5($password . $userInfo['salt'])) {
            // unset($userInfo['password']);
            unset($userInfo['salt']);
            //$userInfo['avatar'] = Common::addimghttp($userInfo['avatar']);
            //$userInfo['avatar'] = $userInfo['avatar'] ? Yii::app()->params['front'] . $userInfo['avatar'] : "";
            // 更新登录相关信息
            $o = new StdStudent();
            $model = $o->findByPk($userInfo['uid']);
            //$model->ip = $_SERVER['REMOTE_ADDR'];
            $model->login_time = time();
            $model->last_time = $userInfo['login_time'] ? $userInfo['login_time'] : $model->login_time;
            $userInfo['key'] = md5(time());
            $model->key = $userInfo['key'];
            if ($model->save(false)) {
                return $userInfo;
            } else {
                return array();
            }
        } else {
            return array();
        }
    }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值