• 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() 的解释,  先没时间研究了, 感兴趣的可以仔细了解一下.

    QQ:309488423 Email:leiliu_lucfer@163.com
  • 相关阅读:
    尬聊攻略丨过年回家,你最怕被亲戚问什么?
    有人被盗刷900次? 支付宝发布年终“神反转”盘点
    470余万条疑似12306用户数据遭贩卖 嫌疑人被刑拘
    利用Python实现对Web服务器的目录探测
    栈空间溢出
    KB奇遇记(6):搞笑的ERP项目团队
    探寻不同版本号的SDK对iOS程序的影响
    阅读《Android 从入门到精通》(24)——切换图片
    leetcode
    Grunt的配置及使用(压缩合并js/css)
  • 原文地址:https://www.cnblogs.com/leiliu-lucifer/p/9970745.html
Copyright © 2020-2023  润新知