OCM
2017-03-14 11:40
public function getWxAccessToken()
239 {
240 //将access_token存在session、cookie中
241 if ( $_SESSION['access_token'] && $_SESSION['expire_time'] > time()) {
242 //仍然可以使用access_token;
244 return $_SESSION['access_token'];
245
246 } else {
247 //重新获取,access_token不存在或者已经过期。
2
249 $appid = 'wsxxp3x10cbg12dehjhuaddjd7df89c9';
250 $appsecret = '8afxx7b0e02237c7hhh55l4ggb5sgssss44ss71ffc646bf98e5';
251 //1.请求地址
252 $url = "https://api.weixin.qq.com/cgi-bin/token?gra nt_type=client_credential&appid=".$appid."&secret=".$appsecret."";
253 $res = $this->http_curl($url,'get','json');
$access_token = $res['access_token'];
255 //将重新获取到的access_token存到session中
256 session_start();
257 $_SESSION['access_token'] = $access_token;
258 $_SESSION['expire_time'] = time() + 7000000;
259 return $access_token;
260 }
261 }
如过运行提示$_SESSION未定义,加上isset()后可以运行,但是每次获取到的都是新的access_token
session_start();不能放到条件分支里面,放在函数里面开头即可,深层次的原因可能来自于,条件语句和函数的运行方式不同,比如条件是执行时才会分配内存,而函数被调用时会首先为变量创建内存,等函数结束调用销毁,这个先后顺序可能导致全局$_SESSION['access_token'],不会被当作会话变量(也就是说不能被会话管理所管理)。
是否为 未定义 : isset($_SESSION['access_token'])
PHP微信公众平台开发高级篇—自定义菜单
28920 学习 · 81 问题
相似问题