欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php獲取微信openid方法總結(jié)

 更新時(shí)間:2019年10月10日 15:29:54   投稿:laozhang  
在本篇文章里小編給大家整理了關(guān)于php獲取微信openid方法總結(jié),有需要的朋友們參考學(xué)習(xí)下。

使用微信接口,無(wú)論是自動(dòng)登錄還是微信支付我們首先需要獲取的就是openid,獲取openid的方式有兩種,一種是在關(guān)注的時(shí)候進(jìn)行獲取,這種訂閱號(hào)就可以獲取的到,第二種是通過(guò)網(wǎng)頁(yè)授權(quán)獲取,這種獲取需要的是認(rèn)證服務(wù)號(hào)。

今天我要說(shuō)的是第二種網(wǎng)頁(yè)授權(quán)獲取openid。下面是我寫(xiě)的一個(gè)關(guān)于獲取openid的類(lèi)

<?php

/**

 * 微信授權(quán)相關(guān)接口

 * 

 * @link http://www.phpddt.com

 */

class Wchat

{

   private $app_id = 'wx444444444444';

   private $app_secret = '77777777';

   private $state='aaaa';

  /**

   * 獲取微信授權(quán)鏈接

   * 

   * @param string $redirect_uri 跳轉(zhuǎn)地址

   * @param mixed $state 參數(shù)

   */

  public function get_authorize_url($redirect_uri = '', $state = '')

  {

    $redirect_uri = urlencode($redirect_uri);

    return "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$this->app_id}&redirect_uri={$redirect_uri}&response_type=code&scope=snsapi_userinfo&state={$state}#wechat_redirect";

  }

   /**

   * 獲取微信openid

   */

  public function getOpenid($turl)

  {

    if (!isset($_GET['code'])){

      //觸發(fā)微信返回code碼

       

       $url=$this->get_authorize_url($turl, $this->state);

       

      Header("Location: $url");

      exit();

    } else {

      //獲取code碼,以獲取openid

      $code = $_GET['code'];

      $access_info = $this->get_access_token($code);

      return $access_info;

    }

     

  }

  /**

   * 獲取授權(quán)token網(wǎng)頁(yè)授權(quán)

   * 

   * @param string $code 通過(guò)get_authorize_url獲取到的code

   */

  public function get_access_token($code = '')

  {

   $appid=$this->app_id;

   $appsecret=$this->app_secret;

    

    $token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$appsecret."&code=".$code."&grant_type=authorization_code";

    //echo $token_url;

    $token_data = $this->http($token_url);

    // var_dump( $token_data);

    if($token_data[0] == 200)

    {

      $ar=json_decode($token_data[1], TRUE);

      return $ar;

    }

     

    return $token_data[1];

  }

   

   

  public function http($url, $method='', $postfields = null, $headers = array(), $debug = false)

  {

    $ci = curl_init();

    /* Curl settings */

    curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);

    curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 30);

    curl_setopt($ci, CURLOPT_TIMEOUT, 30);

    curl_setopt($ci, CURLOPT_RETURNTRANSFER, true);

 

    switch ($method) {

      case 'POST':

        curl_setopt($ci, CURLOPT_POST, true);

        if (!empty($postfields)) {

          curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);

          $this->postdata = $postfields;

        }

        break;

    }

    curl_setopt($ci, CURLOPT_URL, $url);

    curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);

    curl_setopt($ci, CURLINFO_HEADER_OUT, true);

 

    $response = curl_exec($ci);

    $http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);

 

    if ($debug) {

      echo "=====post data======\r\n";

      var_dump($postfields);

 

      echo '=====info=====' . "\r\n";

      print_r(curl_getinfo($ci));

 

      echo '=====$response=====' . "\r\n";

      print_r($response);

    }

    curl_close($ci);

    return array($http_code, $response);

  }

 

}

?>

getOpenid($turl)這個(gè)方法就是獲取openid的方法。前端調(diào)用代碼如下:

$openid=isset($_COOKIE['openid'])?$_COOKIE['openid']:'';

  

   if(empty($openid))

   {

     $wchat=new wchat();

     $t_url='http://'.$_SERVER['HTTP_HOST'].'/user.php?act=register';

      

     $info=$wchat->getOpenid($t_url);

      

     if($info){

        $openid=$info['openid'];

      setcookie('openid',$openid,time()+86400*30);  

        

     }

      

   }

以上就是我總結(jié)的獲取openid的方法啦。

以上就是php獲取微信openid的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 如何使用腳本模仿登陸過(guò)程

    如何使用腳本模仿登陸過(guò)程

    如何使用腳本模仿登陸過(guò)程...
    2006-11-11
  • 根據(jù)key刪除數(shù)組中指定的元素實(shí)現(xiàn)方法

    根據(jù)key刪除數(shù)組中指定的元素實(shí)現(xiàn)方法

    下面小編就為大家?guī)?lái)一篇根據(jù)key刪除數(shù)組中指定的元素實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • centos下file_put_contents()無(wú)法寫(xiě)入文件的原因及解決方法

    centos下file_put_contents()無(wú)法寫(xiě)入文件的原因及解決方法

    下面小編就為大家?guī)?lái)一篇centos下file_put_contents()無(wú)法寫(xiě)入文件的原因及解決方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04
  • PHP中文分詞的簡(jiǎn)單實(shí)現(xiàn)代碼分享

    PHP中文分詞的簡(jiǎn)單實(shí)現(xiàn)代碼分享

    對(duì)于中文搜索引擎來(lái)說(shuō), 中文分詞是整個(gè)系統(tǒng)最基礎(chǔ)的部分之一, 因?yàn)槟壳盎趩巫值闹形乃阉魉惴ú⒉皇翘谩?/div> 2011-07-07
  • PHP連接MongoDB示例代碼

    PHP連接MongoDB示例代碼

    這里采用默認(rèn)連接本機(jī)的27017端口,當(dāng)然你也可以連接遠(yuǎn)程主機(jī)如192.168.0.4:27017,如果端口是27017,端口可以省略
    2012-09-09
  • PHP生成制作驗(yàn)證碼的簡(jiǎn)單實(shí)例

    PHP生成制作驗(yàn)證碼的簡(jiǎn)單實(shí)例

    下面小編就為大家?guī)?lái)一篇PHP生成制作驗(yàn)證碼的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06
  • PHP file_get_contents 函數(shù)超時(shí)的幾種解決方法

    PHP file_get_contents 函數(shù)超時(shí)的幾種解決方法

    在使用file_get_contents函數(shù)的時(shí)候,經(jīng)常會(huì)出現(xiàn)超時(shí)的情況,在這里要通過(guò)查看一下錯(cuò)誤提示,看看是哪種錯(cuò)誤,比較常見(jiàn)的是讀取超時(shí),這種情況大家可以通過(guò)一些方法來(lái)盡量的避免或者解決。
    2009-07-07
  • 詳解phpmyadmin相關(guān)配置與錯(cuò)誤解決

    詳解phpmyadmin相關(guān)配置與錯(cuò)誤解決

    這篇文章主要介紹了詳解phpmyadmin相關(guān)配置與錯(cuò)誤解決的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家遇到這種問(wèn)題可以解決,需要的朋友可以參考下
    2017-10-10
  • 淺析PHP原理之變量(Variables inside PHP)

    淺析PHP原理之變量(Variables inside PHP)

    我前面的文章中已經(jīng)講過(guò),PHP的執(zhí)行是通過(guò)Zend engine(ZE, Zend引擎), ZE是用C編寫(xiě)的,大家都知道C是一個(gè)強(qiáng)類(lèi)型語(yǔ)言,也就是說(shuō),在C中所有的變量在它被聲明到最終銷(xiāo)毀,都只能保存一種類(lèi)型的數(shù)據(jù)。 那么PHP是如何在ZE的基礎(chǔ)上實(shí)現(xiàn)弱類(lèi)型的呢
    2013-08-08
  • php中unserialize返回false的解決方法

    php中unserialize返回false的解決方法

    這篇文章主要介紹了php中unserialize返回false的解決方法,是PHP程序設(shè)計(jì)中非常經(jīng)典的問(wèn)題,需要的朋友可以參考下
    2014-09-09

最新評(píng)論