栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

基于CI框架的微信网页授权库示例

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于CI框架的微信网页授权库示例

本文实例讲述了基于CI框架的微信网页授权库。分享给大家供大家参考,具体如下:

这里演示建立在CI框架上的微信网页授权功能。

1. 微信小类库,网页授权放置在libraries文件夹

appId = trim('你的appid');
      $this->appSecret = trim('你的appsecret');
    }
    function redirect_url($redirect)
    {
      
      $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=$this->appId&redirect_uri=$redirect&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
      return $url;
    }
    
    function access_token($code)
    {
      
      $post_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$this->appId&secret=$this->appSecret&code=$code&grant_type=authorization_code";
      // echo $post_url;exit();
      $return = $this->postdata($post_url);
      // print_r($return);exit();
      $access_token = $return['access_token'];
      $openid = $return['openid'];
      
      $get_userinfo = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid&lang=zh_CN";
      $userinfo = json_decode(file_get_contents($get_userinfo));
      return $userinfo;
    }
    function eff($access_token,$openid)
    {
      
      $eff_url = "https://api.weixin.qq.com/sns/auth?access_token=$access_token&openid=$openid";
      $get_eff =json_decode(file_get_contents($eff_url));
      return $get_eff;
    }
    //通过curl方式提交code换取access_token数据
    function postdata($url)
    {
header('Content-Type:text/html;charset=utf-8');
// echo $url;exit();
      $curl = curl_init();
      curl_setopt($curl, CURLOPT_URL, $url);
      curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
      curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
      curl_setopt($curl, CURLOPT_SSLVERSION, 1);
      // if (!empty($data)){
 // curl_setopt($curl, CURLOPT_POST, 1);
 // curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
      // }
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
      $output = curl_exec($curl);
      curl_close($curl);
      // var_dump($output);exit();
      // print_r($output);exit();
      $access = json_decode($output,true);
      return $access;
    }
    
      function save_session($data)
      {
 foreach ($data as $key => $value) {
   // $_SESSION['uid'] = $value['uid'];
   // $_SESSION['nickname'] = $value['nickname'];
   // $_SESSION['fullname'] = $value['fullname'];
   // $_SESSION['status'] = $value['status'];
   // $_SESSION['groups'] = $value['groups'];
   $_SESSION[$key] = $value;
 }
 return $_SESSION;
 // print_r($_SESSION);exit();
 // unset($_SESSION[0]);
      }
    function obj_to_arr($data)
    {
      // 进行转换成数组 使用 obj_to_arr方式
      $data = is_object($data)?get_object_vars($data):$data;
 foreach ($data as $key => $value)
 {
   $arr[$key] = $value;
 }
 return $arr;
    }
}

2. 通过code换access_token获取用户信息,controller文件

load->library(array('weixin','session'));
      $this->load->helper('url');
      // $this->load->ldap_mod_del(link_identifier, dn, entry)
      $this->load->model('Coupon_model');
    }
    
    function index()
    {
      $this->load->view('/coupon/index.html');
    }
    function User_exists()
    {
      
 $user_arr = $this->Get_code();
 // var_dump($user_arr);exit();
 $user = $this->weixin->obj_to_arr($user_arr);
 // var_dump($user);exit();
 // print_r($user);exit();
 $user_exists = $this->Coupon_model->CheckUser('cou_user',$user);
 // print_r($user_exists);exit();
 // $redirect = 'http://yourwebname.com/coupon/index.php/Coupon/Coupon_index/Coupon_Get/bid/1';
 // $return_url = $this->session->return_url;
 $redirect = 'http://yourwebname.com'.$this->session->return_url;
 // echo $redirect;exit();
 if(empty($user_exists))
 {
    
 //加入自定义的字符进入数组
 unset($user['privilege']);
 $user_exists['nickname']   = $user['nickname'];
 $user_exists['openid']    = $user['openid'];
 $user_exists['language']   = $user['language'];
 $user_exists['city']     = $user['city'];
 $user_exists['country']    = $user['country'];
 $user_exists['province']   = $user['province'];
 $user_exists['headimgurl']  = $user['headimgurl'];
 $user_exists['sex']      = $user['sex'];
 $user_exists['fullname']   = $user['nickname'];
 $user_exists['telphone']   = '';
 $user_exists['login_ip']   =$this->input->ip_address();
 $user_exists['last_ip']    =$this->input->ip_address();
 $user_exists['groups']    = REGISTER_GROUP_ID;
 $user_exists['status']    = 1;
 $user_exists['login_time']  = date("Y-m-d");
  $insert_id = $this->Coupon_model->insert_one('cou_user',$user_exists);
 $user_exists['uid'] = $insert_id;
 }
 else{
  $user_exists = $user_exists[0];
 }
 // $return_url = $this->session->back_url;
 // if(isset($return_url))header('location:'.$return_url);
 
 $this->session->set_userdata($user_exists);
 if(isset($this->session->return_url))header('location:'.$this->session->return_url);
 // print_r($user_exists);exit();
 header('location:'.$redirect);
    }
    function Coupon_start()
    {
      
      $redirect_url = 'Coupon/Coupon_index/User_exists';
      $redirect = urlencode('http://yourwebname.com/coupon/index.php/'.$redirect_url);
      // $redirect = urlencode('http://yourwebname.com/coupon/index.php/Coupon/Coupon_index/Get_code');
      $return = $this->weixin->redirect_url($redirect);
header('location:'.$return);
    }
    public function Get_code()
    {
      if(isset($_GET['code']))
      {
 $code = $_GET['code'];
 // echo $code;exit();
 $user_arr = $this->weixin->access_token($code);
 //跳转到用户检测中check_exists()去
 // echo $user_arr;exit();
 // var_dump($user_arr);
 return $user_arr;
      }else{
 //否则检测cookie中是否存在该用户,如果有,则return回首页
   echo 'error';
      }
     }
     public function Coupon_Get()
     {
      
      // $b_name = $this->uri->segment(4, 0);
      $nickname = $this->session->nickname;
      $openid = $this->session->openid;
      $status = $this->session->status;
      $_SESSION['return_url'] = $_SERVER['REQUEST_URI'];
      // $this->session->set_userdata($return_url);
      // echo $this->session->return_url;exit();
      if(empty($nickname))header('location:'.'http://yourwebname.com/coupon/index.php/Coupon/Coupon_index/Coupon_start');
      $bid = $this->uri->segment(5, 0);
      
      $content = $this->Coupon_model->Coupon_Business('cou_business',$bid);
      // print_r($content);
      // echo $bid;
      // echo $b_name;
      $data['bname']   = $content['bname'];
      $data['discount']  = $content['discount'];
      $data['bimg']    = $content['bimg'];
      $data['contents']  = $content['contents'];
      $data['amount']   = $content['amount'];
      $data['nickname']  = $nickname;
      $data['status']   = $status;
      $data['js'] = json_encode(array($content['bname'],$content['discount'],$nickname,$status));
      // echo $data['js'];exit();
      // print_r($data);
      $this->load->view('/coupon/index.html',$data);
      // echo $nickname;
      // echo $status;
    }
}

更多关于CodeIgniter相关内容感兴趣的读者可查看本站专题:《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《php优秀开发框架总结》、《ThinkPHP入门教程》、《ThinkPHP常用方法总结》、《Zend frameWork框架入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/41986.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号