国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > PHP > 正文

基于CI框架的微信網(wǎng)頁(yè)授權(quán)庫(kù)示例

2024-05-04 23:52:53
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了基于CI框架的微信網(wǎng)頁(yè)授權(quán)庫(kù)。分享給大家供大家參考,具體如下:

這里演示建立在CI框架上的微信網(wǎng)頁(yè)授權(quán)功能。

1. 微信小類(lèi)庫(kù),網(wǎng)頁(yè)授權(quán)放置在libraries文件夾

<?phpif ( ! defined('BASEPATH')) exit('No direct script access allowed');Class Weixin{    private $appId;    private $appSecret;    function __construct()    {      $this->appId = trim('你的appid');      $this->appSecret = trim('你的appsecret');    }    function redirect_url($redirect)    {      /*授權(quán)頁(yè)面*/      $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;    }    /* 通過(guò)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";             // echo $post_url;exit();      $return = $this->postdata($post_url);      // print_r($return);exit();      $access_token = $return['access_token'];      $openid = $return['openid'];      /*獲取微信用戶數(shù)據(jù)*/      $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)    {      /*檢測(cè)access_token是否正確,errcode=0 為正確*/      $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;    }    //通過(guò)curl方式提交code換取access_token數(shù)據(jù)    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;    }    /*      這個(gè)位置開(kāi)始是控制器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)    {      // 進(jìn)行轉(zhuǎn)換成數(shù)組 使用 obj_to_arr方式      $data = is_object($data)?get_object_vars($data):$data;        foreach ($data as $key => $value)        {          $arr[$key] = $value;        }        return $arr;    }}

2. 通過(guò)code換access_token獲取用戶信息,controller文件

<?phpif ( ! defined('BASEPATH')) exit('No direct script access allowed');Class Coupon_index extends CI_Controller{    function __construct()    {      parent::__construct();      $this->load->library(array('weixin','session'));      $this->load->helper('url');      // $this->load->ldap_mod_del(link_identifier, dn, entry)      $this->load->model('Coupon_model');    }    /**     *優(yōu)惠券主程序     */    function index()    {      $this->load->view('/coupon/index.html');    }    function User_exists()    {      /*        檢測(cè)改微信用戶是否存在        $user_arr 獲取的是通過(guò)get_code返回的微信用戶信息,此時(shí)的信息是通過(guò)微信服務(wù)器返回的,不能記錄session        $user std_obj模式,轉(zhuǎn)換為數(shù)組        $user_exists 扔入model中,檢測(cè)數(shù)據(jù)表中是否存在該用戶        $redirect 走完流程后,跳轉(zhuǎn)到首頁(yè)        if語(yǔ)句的作用,是 判斷通過(guò)model返回?cái)?shù)據(jù)表的信息,如果為空則把微信用戶信息錄入到表中,再讀取出來(lái),存進(jìn)session。        else 則數(shù)據(jù)表已經(jīng)存在該用戶,直接讀取,存進(jìn)session        需要注意的是,使用foreach的原因,是二維數(shù)組轉(zhuǎn)一維數(shù)組      */        $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))        {           /*         由于微信獲取到的用戶數(shù)據(jù)是stdclass對(duì)象格式         所以需要進(jìn)行轉(zhuǎn)換成數(shù)組 使用 obj_to_arr方式         */        //加入自定義的字符進(jìn)入數(shù)組        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()    {      /*進(jìn)入領(lǐng)取頁(yè)面,需要先經(jīng)過(guò)授權(quán)*/      $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);        //跳轉(zhuǎn)到用戶檢測(cè)中check_exists()去        // echo $user_arr;exit();        // var_dump($user_arr);        return $user_arr;      }else{        //否則檢測(cè)cookie中是否存在該用戶,如果有,則return回首頁(yè)          echo 'error';      }     }     public function Coupon_Get()     {      /*獲取商家bid,讀取相關(guān)信息*/      // $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);      /*扔進(jìn)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;    }}

希望本文所述對(duì)大家基于CodeIgniter框架的PHP程序設(shè)計(jì)有所幫助。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到PHP教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 海伦市| 东山县| 闸北区| 平潭县| 湘西| 和静县| 伽师县| 斗六市| 仁怀市| 漳平市| 永昌县| 庄河市| 金门县| 鹿邑县| 弥渡县| 南投县| 铁岭市| 涿州市| 特克斯县| 温泉县| 镇远县| 拉萨市| 花莲市| 景德镇市| 酒泉市| 合川市| 翁牛特旗| 张家川| 旺苍县| 绥江县| 林甸县| 丹寨县| 保靖县| 余庆县| 金溪县| 星座| 马关县| 德令哈市| 达州市| 沧州市| 芷江|