• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

php 搞代码 3年前 (2022-01-22) 19次浏览 已收录 0个评论

本文实例讲述了基于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_us<b>6本文来源gao@dai!ma.com搞$代^码!网7</b><pre>搞gaodaima代码

erinfo&state=STATE#wechat_redirect”; return $url; } /* 通过code换取access_token*/ function access_token($code) { /*获取到的code换取access_token和openid*/ $post_url = “https://api.weixin.qq.com/sns/oauth2/access_token?appid=$this->appId&secret=$this->appSecret&code=$code&grant_type=authorization_code&#8221;; // 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&#8221;; $userinfo = json_decode(file_get_contents($get_userinfo)); return $userinfo; } function eff($access_token,$openid) { /*检测access_token是否正确,errcode=0 为正确*/ $eff_url = “https://api.weixin.qq.com/sns/auth?access_token=$access_token&openid=$openid&#8221;; $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; } /* 这个位置开始是控制器index()传入的微信用户资料处理 */ 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 获取的是通过get_code返回的微信用户信息,此时的信息是通过微信服务器返回的,不能记录session        $user std_obj模式,转换为数组        $user_exists 扔入model中,检测数据表中是否存在该用户        $redirect 走完流程后,跳转到首页        if语句的作用,是 判断通过model返回数据表的信息,如果为空则把微信用户信息录入到表中,再读取出来,存进session。        else 则数据表已经存在该用户,直接读取,存进session        需要注意的是,使用foreach的原因,是二维数组转一维数组      */        $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))        {           /*         由于微信获取到的用户数据是stdclass对象格式         所以需要进行转换成数组 使用 obj_to_arr方式         */        //加入自定义的字符进入数组        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);        /*由Coupon_idex中的Get_Coupon处理*/        $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()     {      /*获取商家bid,读取相关信息*/      // $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);      /*扔进Coupon_model中,读取bid中的商家信息*/      $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框架的PHP程序设计有所帮助。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:基于CI框架的微信网页授权库示例_php实例
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址