跳至
[1]
[2]
[全屏預(yù)覽]
<?php if ( ! 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)頁面*/ $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; } /* 通過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) { /*檢測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; } //通過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; } /* 這個位置開始是控制器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. [代碼]通過code換access_token獲取用戶信息,controller文件 跳至 [1] [2] [全屏預(yù)覽]
<?php if ( ! 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() { /* 檢測改微信用戶是否存在 $user_arr 獲取的是通過get_code返回的微信用戶信息,此時的信息是通過微信服務(wù)器返回的,不能記錄session $user std_obj模式,轉(zhuǎn)換為數(shù)組 $user_exists 扔入model中,檢測數(shù)據(jù)表中是否存在該用戶 $redirect 走完流程后,跳轉(zhuǎn)到首頁 if語句的作用,是 判斷通過model返回?cái)?shù)據(jù)表的信息,如果為空則把微信用戶信息錄入到表中,再讀取出來,存進(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://h5.imchaotan.com/coupon/index.php/Coupon/Coupon_index/Coupon_Get/bid/1'; // $return_url = $this->session->return_url; $redirect = 'http://h5.imchaotan.com'.$this->session->return_url; // echo $redirect;exit(); if(empty($user_exists)) { /* 由于微信獲取到的用戶數(shù)據(jù)是stdclass對象格式 所以需要進(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)取頁面,需要先經(jīng)過授權(quán)*/ $redirect_url = 'Coupon/Coupon_index/User_exists'; $redirect = urlencode('http://h5.imchaotan.com/coupon/index.php/'.$redirect_url); // $redirect = urlencode('http://h5.imchaotan.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)到用戶檢測中check_exists()去 // echo $user_arr;exit(); // var_dump($user_arr); return $user_arr; }else{ //否則檢測cookie中是否存在該用戶,如果有,則return回首頁 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://h5.imchaotan.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; } }
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud
Guide de construction de Grass Wonder | Uma musume joli derby
1 Il y a quelques mois
By Jack chen
<??>: 99 nuits dans la forêt - tous les badges et comment les déverrouiller
4 Il y a quelques semaines
By DDD
Uma Musume Pretty Derby Banner Schedule (juillet 2025)
1 Il y a quelques mois
By Jack chen
Guide de température de Rimworld Odyssey pour les navires et Gravtech
3 Il y a quelques semaines
By Jack chen
Windows Security est vide ou ne montre pas les options
1 Il y a quelques mois
By 下次還敢

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)