php如何第三方登录,php 第三方登录

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();

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值