+
95
-

回答

<?php

/**
* 获取 access_tonken值
* @param string $token_file 用来存储的文件
* @return access_token
*/
function getAccessToken($token_file = 'access_token_file') {
//处理是否过期问题,将access_token存储到文件
$life_time = 7200;
if (file_exists($token_file) && time() - filemtime($token_file) < $life_time) {
// 存在有效的access_token 直接返回文件内容
return file_get_contents($token_file);
}
//接口URL
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->_appid."&secret=".$this->_appsecret;
//发送GET请求
$result = _request('get', $url);
if (!$result) {
return false;
}
//处理数据
$result_obj = json_decode($result);
//写入到文件
file_put_contents($token_file, $result_obj->access_token);
return $result_obj->access_token;
}
function _request($method = 'get', $url, $data = array(), $ssl = true) {
//curl完成,先开启curl模块
//初始化一个curl资源
$curl = curl_init();
//设置curl选项
curl_setopt($curl, CURLOPT_URL, $url); //url
//请求的代理信息
$user_agent = isset($_SERVER['HTTP_USER_AGENT'])?$_SERVER['HTTP_USER_AGENT']: 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0 FirePHP/0.7.4';
curl_setopt($curl, CURLOPT_USERAGENT, $user_agent);
//referer头,请求来源
curl_setopt($curl, CURLOPT_AUTOREFERER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 30); //设置超时时间
//SSL相关
if ($ssl) {
//禁用后,curl将终止从服务端进行验证;
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
//检查服务器SSL证书是否存在一个公用名
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
}
//判断请求方式post还是get
if (strtolower($method) == 'post') {
/**************处理post相关选项******************/
//是否为post请求 ,处理请求数据
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
//是否处理响应头
curl_setopt($curl, CURLOPT_HEADER, false);
//是否返回响应结果
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

//发出请求
$response = curl_exec($curl);
if (false === $response) {
echo '<br>',
curl_error($curl),
'<br>';
return false;
}
//关闭curl
curl_close($curl);
return $response;
}

网友回复

我知道答案,我要回答