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的详细内容,更多请关注脚本之家其它相关文章!

相关文章

  • 解析MySql与Java的时间类型

    解析MySql与Java的时间类型

    本篇文章是对MySql与Java的时间类型进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • Linux平台php命令行程序处理管道数据的方法

    Linux平台php命令行程序处理管道数据的方法

    这篇文章主要介绍了Linux平台php命令行程序处理管道数据的方法,结合实例形式分析了Linux平台管道提示符的功能及php使用命令行处理管道数据的相关实现技巧,需要的朋友可以参考下
    2016-11-11
  • php图片处理函数获取类型及扩展名实例

    php图片处理函数获取类型及扩展名实例

    这篇文章主要介绍了php图片处理函数获取类型及扩展名的方法,包括image2wbmp、image_type_to_extension、image_type_to_mime_type等函数的具体使用,具有不错的借鉴与学习价值,需要的朋友可以参考下
    2014-11-11
  • 如何用php获取程序执行的时间

    如何用php获取程序执行的时间

    本篇文章是对使用php获取程序执行的时间进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • PHP的拦截器实例分析

    PHP的拦截器实例分析

    这篇文章主要介绍了PHP的拦截器,以实例形式分析了常见的各类拦截器的用法,非常具有实用价值,需要的朋友可以参考下
    2014-11-11
  • PHP连接MySql数据库方法简化版

    PHP连接MySql数据库方法简化版

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,这篇文章主要介绍了PHP连接mysql数据库,数据库连接静态工具类,简化连接
    2022-07-07
  • php抓取https的内容的代码

    php抓取https的内容的代码

    有时候需要获取https网页的内容,下面得方法,可以参考下。
    2010-04-04
  • PHP使用trim函数去除字符串左右空格及特殊字符实例

    PHP使用trim函数去除字符串左右空格及特殊字符实例

    这篇文章主要介绍了PHP使用trim函数去除字符串左右空格及特殊字符的用法,结合实例简单分析了trim函数不带附加参数去除空格及使用附加参数去除指定字符的使用技巧,需要的朋友可以参考下
    2016-01-01
  • PHP利用MySQL保存session的实现思路及示例代码

    PHP利用MySQL保存session的实现思路及示例代码

    使用MySQL保存session,需要保存三个关键性的数据:session id、session数据、session生命期,下面的示例,大家可以看看
    2014-09-09
  • php 生成签名及验证签名详解

    php 生成签名及验证签名详解

    这篇文章主要介绍了php 生成签名及验证签名详解的相关资料,需要的朋友可以参考下
    2016-10-10

最新评论