码迷,mamicode.com
首页 > 其他好文 > 详细

yii框架中保存第三方登录信息

时间:2016-04-11 20:20:59      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:

(第三方登录)

创建应用,域名,详情请看:http://www.cnblogs.com/xujn/p/5287157.html

效果图:

技术分享

把API,callback.php,qqlogin.php,图片,都放在web目录下.

第一种方法(mysql方法) call.back.php:

<?php
header(‘content-type:text/html;charset=utf-8‘);
require_once("./API/qqConnectAPI.php");
//放置按钮
$qc = new QC();
//根据code获取accesstoken
$token= $qc->qq_callback();
//根据accesstoken获取openid
$openid= $qc->get_openid();
//根据token和openid,获取用户信息
$qc = new QC($token,$openid);
$arr= $qc->get_user_info();
$nickname=$arr[‘nickname‘];

//入库(1)
$link=mysqli_connect(‘localhost:3306‘,‘root‘,‘root‘);
mysqli_query($link,‘use small2‘);
mysqli_query($link,‘set names utf8‘);
$sql_openid="select * from qq where open_id=‘$openid‘";
$db_openid=mysqli_query($link,$sql_openid);
//var_dump($db_openid);die;
$data_openid=mysqli_fetch_assoc($db_openid);
//判断用户id是否存在
if($data_openid)
{
    if($data_openid[‘token‘]==$token)
    {
         echo "<script>alert(‘登陆成功‘);location.href=‘http://www.small2.com/backend/web/index.php?r=login/login‘</script>";
    }
    else
    {
       $token_update="update qq set token=‘$token‘ where open_id=‘$openid‘";
       $db_token=mysqli_fetch_assoc(mysqli_query($link,$token_update));
       if($db_token)
       {
             echo "<script>alert(‘登陆成功‘);location.href=‘http://www.small2.com/backend/web/index.php?r=login/login‘</script>";
       }
       else
       {
           echo "<script>alert(‘token修改失败‘);location.href=‘http://www.small2.com/backend/web/index.php?r=login/login‘</script>";
       }   
    }
}
else
{
    //添加
    $add_login="insert into login(u_name,pwd) values(‘傻瓜‘,‘123456‘)";
    //echo $add_login;die;
    $data_add=mysqli_query($link,$add_login);
    if($data_add)
    {
        $select_userid="select * from login order by u_id desc";
        $last_id=mysqli_fetch_assoc(mysqli_query($link,$select_userid));
        $u_id=$last_id[‘u_id‘];
        $add_useropen="insert into qq values(null,‘$nickname‘,‘$u_id‘,‘$openid‘,‘腾讯QQ‘,‘$token‘)";
        $db_useropen=mysqli_query($link,$add_useropen);
        if($db_useropen)
        {
            echo "<script>alert(‘登陆成功‘);location.href=‘http://www.small2.com/backend/web/index.php?r=login/login‘</script>";
        }
        else
        {
           echo "<script>alert(‘open添加失败‘);location.href=‘http://www.small2.com/backend/web/index.php?r=login/login‘</script>";
        }
    }
    else
    {
           echo "<script>alert(‘用户添加失败‘);location.href=‘http://www.small2.com/backend/web/index.php?r=login/login‘</script>";
    }
}
?>

第二种方法(跳转控制器):

callback.php:

$nickname=$arr[‘nickname‘];
$all=$token.",".$openid.",".$nickname;
echo header("location:http://www.small2.com/backend/web/index.php?r=login/insert&all=$all");

控制器:

 //保存第三方登录的用户信息,并验证是否成功
   public function actionInsert()
   {
      //接收token和openid
      $all=Yii::$app->request->get(‘all‘);
      //炸开字符串
      $res=explode(",",$all);
      //var_dump($res);die;
      $token=$res[0];
      $openid=$res[1];
      $nickname=$res[2];
      
      //查询openid
      $row=Yii::$app->db->createCommand("select * from qq where open_id=‘$openid‘")->queryone();

      //判断是否存在openid
      if($row[‘openid‘])
      {
          //判断token
          if($row[‘token‘]==$token)
          {
              echo "<script>alert(‘登陆成功‘);location.href=‘http://www.small2.com/backend/web/index.php?r=login/login‘</script>";
          }
          else
          {
            //修改token值
             $up_token=Yii::$app->db->createCommand()->update("qq",["token"=>$token]);
             if($up_token->execute())
             {
                echo "<script>alert(‘登陆成功‘);location.href=‘http://www.small2.com/backend/web/index.php?r=login/login‘</script>";
             }
             else
             {
                echo "<script>alert(‘token修改失败‘);location.href=‘http://www.small2.com/backend/web/index.php?r=login/login‘</script>";
             }
          }
      }
      else
      {
         //随意添加一条用户信息,测试一下
         $add_user=Yii::$app->db->createCommand()->insert("login",["u_name"=>‘亲爱的‘,"pwd"=>‘123456‘,"email"=>‘495099758@qq.com‘,‘sex‘=>‘男‘,‘status‘=>1])->execute();
         $u_id= intval(Yii::$app->db->getLastInsertId());
         //把用户id,openid,token插入表中
         $add_qq=Yii::$app->db->createCommand()->insert("qq",["nickname"=>$nickname,"open_id"=>$openid,"token"=>$token,"u_id"=>$u_id,"from"=>‘腾讯QQ‘]);
         if($add_qq->execute())
         {
            echo "<script>alert(‘登陆成功‘);location.href=‘http://www.small2.com/backend/web/index.php?r=login/login‘</script>";
         }
         else
         {
            echo "<script>alert(‘添加失败‘);location.href=‘http://www.small2.com/backend/web/index.php?r=login/login‘</script>";
         }
      }
   }

yii框架中保存第三方登录信息

标签:

原文地址:http://www.cnblogs.com/shaohuixia/p/5379566.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!