php获取用户注册信息,PHP获取用户基本信息

PHP获取用户基本信息<?php

namespace app\home\controller;

use think\Controller;

define("APPID", "");

define('SECRET', "");

class WeChat extends Controller {

//获取用户基本信息

public function getUser()

{

$appid=APPID;

$secret=SECRET;

// access_token    调用接口凭证,这里通过code换取的是一个特殊的网页授权access_token,与基础支持中的access_token(该access_token用于调用其他接口)不同

// openid    普通用户的标识,对当前公众号唯一

//避免重复发送授权链接。已经获取用户信息,刷新页面,获得重新返回该页面,导致相同的授权链接再次请求,产生错误。

//把获取的用户信息保存,每次发送请求前,检查是否已经获取,如果已经获取用户信息,就不再请求。

//提示errcode":40163,"errmsg":"code been used。说明code被使用过一次了,code只能用一次。

//判断是否发送获取code连接

if (input('code')) {

//获取到code判断code是否已经被使用过

if (!cache('code_array')){

//通过code获取access_token

$code = input('code');

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

$result=$this->request($url);

if (!$result) {

return false;

}

$arr=json_decode($result,true);

cache('code_array',$arr,7200);

}

//获取access_token,openid

$code_array=cache('code_array');

$access_token=$code_array['access_token'];

$openid=$code_array['openid'];

$url="https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid&lang=zh_CN";

$result=$this->request($url);

if (!$result) {

return false;

}

//$arr 用户信息数组

$arr=json_decode($result,true);

return $arr;

}else{

//发送获取code连接

$url="https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=*****网站地址*****&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect";

//发送GET请求

header("Location: ".$url);

exit();//必要

}

}

/*

*发送GET请求方法

*@param string $url URL

*@param bool $ssl  是否为https协议

*@return string   响应主体内容

*/

private function request($url,$data=null){

$curl=curl_init();

curl_setopt($curl, CURLOPT_URL, $url);

//设定为不验证证书和host

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);

if(!empty($data)){

curl_setopt($curl, CURLOPT_POST, true);

curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

}

// 将curl_exec()获取的信息以文件流的形式返回,而不是直接输出

curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);

$output=curl_exec($curl);

if (false===$output) {

echo "
",curl_error($curl),"
";

return false;

}

curl_close($curl);

return $output;

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值