php获取微信openid方法总结

 更新时间:2019年10月10日 15:29:54   投稿:laozhang  
在本篇文章里小编给大家整理了关于php获取微信openid方法总结,有需要的朋友们参考学习下。

使用微信接口,无论是自动登录还是微信支付我们首先需要获取的就是openid,获取openid的方式有两种,一种是在关注的时候进行获取,这种订阅号就可以获取的到,第二种是通过网页授权获取,这种获取需要的是认证服务号。

今天我要说的是第二种网页授权获取openid。下面是我写的一个关于获取openid的类

<?php

/**

 * 微信授权相关接口

 * 

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

 */

class Wchat

{

   private $app_id = 'wx444444444444';

   private $app_secret = '77777777';

   private $state='aaaa';

  /**

   * 获取微信授权链接

   * 

   * @param string $redirect_uri 跳转地址

   * @param mixed $state 参数

   */

  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'])){

      //触发微信返回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;

    }

     

  }

  /**

   * 获取授权token网页授权

   * 

   * @param string $code 通过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)这个方法就是获取openid的方法。前端调用代码如下:

$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);  

        

     }

      

   }

以上就是我总结的获取openid的方法啦。

以上就是php获取微信openid的详细内容,更多请关注脚本之家其它相关文章!

相关文章

  • PHP获取当前文件所在目录 getcwd()函数

    PHP获取当前文件所在目录 getcwd()函数

    PHP 当前目录获取方法。
    2009-05-05
  • 将FCKeditor导入PHP+SMARTY的实现方法

    将FCKeditor导入PHP+SMARTY的实现方法

    这篇文章主要介绍了将FCKeditor导入PHP+SMARTY的实现方法,涉及整合FCKeditor与SMARTY的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-01-01
  • PHP实现根据数组某个键值大小进行排序的方法

    PHP实现根据数组某个键值大小进行排序的方法

    这篇文章主要介绍了PHP实现根据数组某个键值大小进行排序的方法,涉及php针对数组的遍历、排序等相关操作技巧,需要的朋友可以参考下
    2018-03-03
  • 浅谈swoole的作用与原理

    浅谈swoole的作用与原理

    异步Node系统可以在不同协议间共享代码库,并在代码之外提供服务。实际上PHP中也有类似于Node的存在,并被列入了PHP拓展,叫做Swoole。本文将带领读者介绍其原理和如何使用。
    2021-05-05
  • 详解PHP中的mb_detect_encoding函数使用方法

    详解PHP中的mb_detect_encoding函数使用方法

    这篇文章主要介绍了详解PHP中的mb_detect_encoding函数使用方法,包括对字符串编码的转换和判断以及Call to undefined function mb_detect_encoding()错误的解决,需要的朋友可以参考下
    2015-08-08
  • PHP获取网卡地址的代码

    PHP获取网卡地址的代码

    php获取网卡地址的方法,用了exec函数
    2008-04-04
  • javascript+php实现根据用户时区显示当地时间的方法

    javascript+php实现根据用户时区显示当地时间的方法

    这篇文章主要介绍了javascript+php实现根据用户时区显示当地时间的方法,实例分析javascript获取客户端时区及与服务器端php交互的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • php下使用strpos需要注意 === 运算符

    php下使用strpos需要注意 === 运算符

    首先应该知道 strpos 函数可能返回布尔值 FALSE,但也可能返回一个与 FALSE 等值的非布尔值,例如 0 或者""。我们应使用 === 运算符来测试本函数的返回值。
    2010-07-07
  • php判断变量类型常用方法

    php判断变量类型常用方法

    php 常用的判断变量的函数有下列几个gettype()、is_array()、is_bool()、is_float()、is_integer()、is_null()、is_numeric()、is_object()、is_resource()、is_scalar() 和 is_string()
    2012-04-04
  • php判断IP地址是否在多个IP段内

    php判断IP地址是否在多个IP段内

    这篇文章主要为大家详细介绍了php判断IP地址是否在多个IP段内,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08

最新评论