萌新,刚刚正式接触微开三天(之前做网站的),今天在将access_token存储的时候出现了个奇葩问题。。
以下是代码: //检查access_token合法性并返回
public function gettoken(){
$accessToken=M('accesstoken');
$time=time();
// var_dump($time);
// var_dump($time=date('Y-m-d H:i:s'));
$sqltoken=$accessToken->where('A_ID=0')->getfield('A_Token');
if(empty($sqltoken)){//若数据为空,将微信获取的access_token存入数据库中
$geturl=$this->geturl();
$expires=$geturl['expires_in'];
$timestamp=$time+$expires;
// var_dump($timestamp);
// var_dump($timestamp=date('Y-m-d H:i:s'));
// die();
$data['A_Date']=$timestamp;
$data['A_Token']=$geturl['access_token'];
$accessToken->add($data); return $geturl; }else{//检测数据库中access_token的时效性
if($sqltoken<$time){
$geturl=$this->geturl();
$expires=$geturl['expires_in'];
$timestamp=$time+$expires;
$data['A_Date']=$timestamp;
$data['A_Token']=$geturl['access_token'];
$accessToken->data($data)->where('A_ID=0')->save(); return $geturl;
}else{//若access_token合法则从数据库中获取并输出
$succ=$accessToken->where('A_ID')->select();
// var_dump($succ);
$geturl=json_encode($succ); return $geturl;
}
}
}
可以看到,$times是当前时间,$expirese为微信返回的时间,$timestamp为二者之和。但是我打印$timestamp时却是当前时间导致存入数据库的时间都是当前时间,每次运行这个的时间,就是相当于调用一个新的access_token了
这到底是怎么产生的呢?真的很好奇,明明已经加了一个$expires,但是就是现实当前时间
以下是代码: //检查access_token合法性并返回
public function gettoken(){
$accessToken=M('accesstoken');
$time=time();
// var_dump($time);
// var_dump($time=date('Y-m-d H:i:s'));
$sqltoken=$accessToken->where('A_ID=0')->getfield('A_Token');
if(empty($sqltoken)){//若数据为空,将微信获取的access_token存入数据库中
$geturl=$this->geturl();
$expires=$geturl['expires_in'];
$timestamp=$time+$expires;
// var_dump($timestamp);
// var_dump($timestamp=date('Y-m-d H:i:s'));
// die();
$data['A_Date']=$timestamp;
$data['A_Token']=$geturl['access_token'];
$accessToken->add($data); return $geturl; }else{//检测数据库中access_token的时效性
if($sqltoken<$time){
$geturl=$this->geturl();
$expires=$geturl['expires_in'];
$timestamp=$time+$expires;
$data['A_Date']=$timestamp;
$data['A_Token']=$geturl['access_token'];
$accessToken->data($data)->where('A_ID=0')->save(); return $geturl;
}else{//若access_token合法则从数据库中获取并输出
$succ=$accessToken->where('A_ID')->select();
// var_dump($succ);
$geturl=json_encode($succ); return $geturl;
}
}
}
可以看到,$times是当前时间,$expirese为微信返回的时间,$timestamp为二者之和。但是我打印$timestamp时却是当前时间导致存入数据库的时间都是当前时间,每次运行这个的时间,就是相当于调用一个新的access_token了
这到底是怎么产生的呢?真的很好奇,明明已经加了一个$expires,但是就是现实当前时间
解决方案 »
- PHP精鹰超级群43016622,百G视频书籍陆续加入!
- 开发了一个全自动实时传真收发软件,现完全免费对外发布,欢迎大家批评指正!(含代码及完整使用说明),值此新年来临之际,特备薄礼,望大家笑纳!
- 急求:Magento1.4的仓库插件、CRM插件、ERP插件
- 大家好!!!问个有关于数组的问题!!
- 关于php论坛的问题
- Discuz X1.5 下载了怎么使用?
- phpcms v9 中怎么使用sphinx 全站索引 ,我配置好了就是搜不到内容啊!
- 请别人建个网站,有什么要注意的地方吗?
- 关于使用solr的php client遇到的问题
- 2个开源软件 pligg wordpress
- php SOAP wsdl 服务端传参数组
- 想在自己电脑上搭建一个网站,安装的时候出了点问题
若是微信返回的应该是这样的数据:{"access_token":"ACCESS_TOKEN","expires_in":7200}
若返回成功,你也可以直接加上 7200