php:关于微信一直无法通过php token验证, ehcho echo $echoStr; 总是提示不对的问题.

Posted 黑衣迷之男

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php:关于微信一直无法通过php token验证, ehcho echo $echoStr; 总是提示不对的问题.相关的知识,希望对你有一定的参考价值。

用微信官方提供的demo验证token 老是失败, 但是我自己用IIS 加 .net , token就能登录成功, 后来debug, 找各种问题,总是不能解决.

最后还是再搜了搜. 找到这么一篇解决方案.原文在这里:

https://www.cnblogs.com/donlyn/p/5675483.html

解决方案:

最终在echo $_GET[\'echostr\'];前添加了一句代码ob_clean();

 1 <?php
 2 //设置token
 3 define("TOKEN", "sohovan2");
 4 5  //新建object
 6 $wechatObj = new wechatCallbackapiTest();
 7 //没有得到echostr 回声, 先验证
 8 //如果不是get操作. get有没有这个echostr.
 9 if (!isset($_GET[\'echostr\'])) {
10 
11 }else{
12     //如果是get操作, 并且是非空.
13     //验证消息;
14     $wechatObj->valid();
15 }
16 
17 class wechatCallbackapiTest
18 {
19     //验证消息
20     public function valid()
21     {
22         $echoStr = $_GET["echostr"];
23         //返回的是简单,去掉参数
24         header("content-type:text;charset=utf-8");
25         if($this->checkSignature()){
26             ob_clean();
27             echo $echoStr;
28             exit;
29         }
30     }
31  
32     //检查签名
33     private function checkSignature()
34     {
35         $signature = $_GET["signature"];
36         $timestamp = $_GET["timestamp"];
37         $nonce = $_GET["nonce"];
38         $token = TOKEN;
39         $tmpArr = array($token, $timestamp, $nonce);
40         //排序.
41         sort($tmpArr, SORT_STRING);
42         //数组的值转化成字符串.
43         $tmpStr = implode($tmpArr);
44         //sha1
45         $tmpStr = sha1($tmpStr);
46  
47         if($tmpStr == $signature){
48             return true;
49         }else{
50             return false;
51         }
52     }
53     
54     //是否是GET提交
55     public function isGet(){
56         return $_SERVER[\'REQUEST_METHOD\'] == \'GET\' ? true : false;
57     }
58 ?>

 这里面有关于php输出缓冲区, 和ob_clean() 的解释,  先没时间研究了, 感兴趣的可以仔细了解一下.

以上是关于php:关于微信一直无法通过php token验证, ehcho echo $echoStr; 总是提示不对的问题.的主要内容,如果未能解决你的问题,请参考以下文章

PHP微信开发ReplyModel(封装验证,数据获取,信息返回)

微信公众平台开发问题——token验证失败

php微信接口验证写法

app与php后台接口登录认证验证(seesion和token)

php 获取微信获取openid需要token吗

php通过token验证表单重复提交