微信开放平台 第三方登录

第一步

<div id="login_container" style="border: 1px red solid"></div>
	<script src="http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>
	<script type="text/javascript">
		 var obj = new WxLogin({
	 self_redirect:false,
	 id:"login_container", 
	 appid: "wxd2846517367a2f30", 
	 scope: "snsapi_login", 
	 redirect_uri: "http://www.liminghulian.com/index.php/home/index/weixin",
	  state: "STATE",
	 style: "",
	 href: ""
	 });
		 // window.location.reload();
	</script>

<br>
<br>
用户id<?php echo session('user_info')['id']?><br>
用户账号<?php echo session('user_info')['mobile']?>
<a href="{:U('Index/quit')}">退出</a>
	<a href="https://open.weixin.qq.com/connect/qrconnect?appid=wxd2846517367a2f30&redirect_uri=http://www.liminghulian.com/index.php/home/index/weixin&response_type=code&scope=snsapi_login&state=STATE#wechat_redirect">微信登录</a>

第二步

 function weixin(){
    //获取code
     if(isset($_GET['code'])){
     // echo $_GET['code'];
      //第二步:通过code获取access_token
      $url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=wxd2846517367a2f30&secret=ee8b8a8e9059949c0a352578d59f86f0&code=".$_GET['code']."&grant_type=authorization_code";
       $res=$this->https_request($url);
       $res=json_decode($res,true);
     //第三步:通过access_token调用接口
      $url="https://api.weixin.qq.com/sns/userinfo?access_token=".$res['access_token']."&openid=".$res['openid']."&lang=zh_CN";
       $info=$this->https_request($url);
       $info=json_decode($info,true);


// $url='https://api.weixin.qq.com/sns/userinfo?access_token='.$arr['access_token'].'&openid='.$arr['openid'].'&lang=zh_CN';
       //var_dump($info);

    if(isset($info['errcode'])){
         echo "<script>window.location.href='https://open.weixin.qq.com/connect/qrconnect?appid=wxd2846517367a2f30&redirect_uri=http://www.liminghulian.com/index.php/home/index/weixin&response_type=code&scope=snsapi_login&state=STATE#wechat_redirect';</script>";
          exit();
         }
//将获取的数据传到ssion
     session('weixin_info',$info);
//将头像移动到指定位置
     

    $weixin = M("userweixin"); // 构建写入的数据数组
    $user = M("user");
    $coun=$weixin->where(array('w_openid'=>session('weixin_info')['openid']))->count();
        if($coun>0){
          $img=$this->https_request(session('weixin_info')['headimgurl']);
          $img_url='./Public/Uploads/weixin/'.session('weixin_info')['openid'].'.jpg';
          file_put_contents($img_url, $img);
           $data=[
          //'w_openid'=>session('weixin_info')['openid'],
          'w_nickname'=>session('weixin_info')['nickname'],
          'w_sex'=>session('weixin_info')['sex'],
          'w_city'=>session('weixin_info')['city'],
          'w_province'=>session('weixin_info')['province'],
          'w_country'=>session('weixin_info')['country'],
          'w_headimgurl'=>$img_url
          //'w_ddate'=>rand(1000,9999)//测试
         
        ];
      
         // 更新数据
         $weixin->where(array('w_openid'=>session('weixin_info')['openid']))->save($data);//$lastInsId为最新插入数据的id
        $wx_info=$weixin->where(array('w_openid'=>session('weixin_info')['openid']))->find();
                  if(empty($wx_info['user_id'])){
                    //未认证
                    $this->redirect("Index/renzheng");
                    exit();
                  }else{
                    //已经认证
                    //关联user表存用户id 登录状态
                    // $list = $user->where(array("lz_user.id"=>$wx_info['user_id']))->field('lz_user.mobile,lz_user.id')->join('lz_userweixin on lz_userweixin.user_id=lz_user.id')->find();
                      $list = $user->where(array("lz_user.id"=>$wx_info['user_id']))->field('mobile,id')->find();
                      session('user_info',$list);
                       //echo "<script> window.location.reload();</script>";
                       $this->redirect("Jiesuan/index");
                       exit();
                  }

        }else{
          $img=$this->https_request(session('weixin_info')['headimgurl']);
          $img_url='./Public/Uploads/weixin/'.session('weixin_info')['openid'].'.jpg';
          file_put_contents($img_url, $img);
          $data=[
          'w_openid'=>session('weixin_info')['openid'],
          'w_nickname'=>session('weixin_info')['nickname'],
          'w_sex'=>session('weixin_info')['sex'],
          'w_city'=>session('weixin_info')['city'],
          'w_province'=>session('weixin_info')['province'],
          'w_country'=>session('weixin_info')['country'],
          'w_headimgurl'=>$img_url,
          'w_ddate'=>time()
        ];
         // 写入数据
              $weixin->add($data);//$lastInsId为最新插入数据的id
          
                   //未认证
                    $this->redirect("Index/renzheng");
                   exit();
                  
        }
     }else{

       //code码不存在
        echo "<meta charset='utf-8' /><script>alert('code码不存在,请您从新扫描!');window.location.href='".U('Index/index')."';</script>";
          exit();

     }

   }

  function renzheng(){
    //echo session('weixin_info')['headimgurl'];
      $this->display('renzheng');
  }


    function  reg(){
        $type=I("type");
        $user = M("user");
        $weixin = M("userweixin"); // 构建写入的数据数组
        $openid=session('weixin_info')['openid'];
         if($type==1){
        //已有账号 进行与微信绑定
        //微信 opendid
         $openid=session('weixin_info')['openid'];
         //判断账号是否存在
          $coun=$user->where(array('mobile'=>I("tel"),'password'=>I("password")))->count();
          $user_info=$user->where(array('mobile'=>I("tel"),'password'=>I("password")))->find();
                if($coun<=0){

                   $meg_arr = array(
                                   "err"=>"2",
                                      "msg" => "该用户不存在!" .  date('Y-m-d H:i:s',time())
                                    );
                                    echo json_encode($meg_arr);

                             exit();


                }else{
                     $data=[
                    'user_id'=>$user_info['id']//测试
                     ];
                 // 更新数据
                 $weixin->where(array('w_openid'=>$openid))->save($data);//
                  
               //关联user表存用户id 登录状态
                     $list = $user->where(array("lz_user.id"=>$user_info['id']))->field('mobile,id')->find();
                      session('user_info',$list);
                      $meg_arr = array(
                                   "err"=>"1",
                                      "msg" => "成功!" .  date('Y-m-d H:i:s',time())
                                    );
                                    echo json_encode($meg_arr);

                             exit();
                }

         }elseif($type==2){
        //添加账号 进行与微信绑定
            //微信 opendid

        //防止手机号重复
        $coun=$user->where(array('mobile'=>I("tel")))->count();
                if($coun>0){

                   $meg_arr = array(
                                   "err"=>"2",
                                      "msg" => "手机号重复,!" .  date('Y-m-d H:i:s',time())
                                    );
                                    echo json_encode($meg_arr);

                             exit();
                }
         //防止重复添加绑定
            $coun=$weixin->where(array('w_openid'=>session('weixin_info')['openid']))->find();
                if(!empty($coun['user_id'])){

                   $meg_arr = array(
                                   "err"=>"2",
                                      "msg" => "此微信号已经绑定手机号!" .  date('Y-m-d H:i:s',time())
                                    );
                                    echo json_encode($meg_arr);

                             exit();


                }else{
          
                  $data=[
                  'password'=> I("password"),
                  'mobile'=> I("tel")
                   ];
                  $lastInsId =$user->add($data);
                if(!empty($lastInsId)){
                     $data=[
                    'user_id'=>$lastInsId//测试
                  ];
              
                 // 更新数据
                 $weixin->where(array('w_openid'=>$openid))->save($data);//

                 //关联user表存用户id 登录状态
                  
                  $list = $user->where(array("lz_user.id"=>$lastInsId))->field('mobile,id')->find();
                      session('user_info',$list);
                 //返回
                   $meg_arr = array(
                                   "err"=>"1",
                                      "msg" => "成功!" .  date('Y-m-d H:i:s',time())
                                    );
                                    echo json_encode($meg_arr);

                             exit();
                  }else{
                   $this->error('数据写入错误!'); 
                  }
                }
               

         }else{
           echo "<script>window.location.href='".U('Index/renzheng')."';</script>";
                   exit();
         }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值