微信公众平台消息接口开发(29)校验签名与消息响应合并_PHP教程

企鹅博客
企鹅博客
企鹅博客
25193
文章
0
评论
2020年8月30日14:01:36 评论 42 views

微信公众平台开发 微信公众平台开发者 微信公众平台开发模式 签名校验 消息响应

作者:方倍工作室

原文:http://www.cnblogs.com/txw1958/archive/2013/05/08/weixin-if29-valid-responseMsg.html

一、问题来源

微信公众平台在启用接口的时候使用valid函数进行验证,

("TOKEN", "方倍工作室" = ->valid();

但在验证完成后,就开始执行对消息的响应,不再使用valid函数,需要把他注释掉,并且设置成responseMsg()

如下

("TOKEN", "方倍工作室" = ->responseMsg();

这样操作,其实比较麻烦,因为要回头来改函数。

二、问题分析

为什么要用两个不同函数来处理呢?这是因为两个不同的函数执行不同的功能,

当执行valid函数时,提交的是验证字符串,用于保证url和token填写提交正确,这个时候微信服务器提交给url的请求是

=eded789463180edf6c13691398d0cb4c85fb0e23=5838479218127813673=1359100969=1359376876

而当响应消息的时候,已经可以确定url地址正确了,这时候主要是获得回复的xml了,这时提交的请求类似如下:

=ba7f5cf8aee512037e5a669596f6f64a8e763d7c=1368016183=1368211921

二、解决方法

我们回头来看一下valid函数

      = ["echostr" (-> 

其中有一个_GET变量,那么什么是_GET变量,以下内容来自 http://www.w3school.com.cn/php/php_get.asp

$_GET 变量
$_GET 变量是一个数组,内容是由 HTTP GET 方法发送的变量名称和值。
$_GET 变量用于收集来自 method="get" 的表单中的值。从带有 GET 方法的表单发送的信息,对任何人都是可见的(会显示在浏览器的地址栏),并且对发送的信息量也有限制(最多 100 个字符)。

为什么使用 $_GET?
注释:在使用 $_GET 变量时,所有的变量名和值都会显示在 URL 中。所以在发送密码或其他敏感信息时,不应该使用这个方法。不过,正因为变量显示在 URL 中,因此可以在收藏夹中收藏该页面。在某些情况下,这是很有用的。

我们注意到在二中描述的,两次不同的请求,签名验证请求中,url中有个echostr变量,而在响应消息中是没有的,

=eded789463180edf6c13691398d0cb4c85fb0e23=5838479218127813673=1359100969=1359376876

那么我们用同样的思路,判断_GET变量中是否有这个echostr变量,来实现区分两种不同的请求:

最终代码类似如下:

 ("TOKEN", "方倍工作室" =  ((['echostr'->->

至此,我们就不用再来注释一个启用另一个了,减少了一次麻烦。

继续阅读
企鹅博客
  • 本文由 发表于 2020年8月30日14:01:36
  • 转载请务必保留本文链接:https://www.qieseo.com/308409.html
实现PHP中session和cookie数据传值功能 php教程

实现PHP中session和cookie数据传值功能

1.session 登录上一个页面以后,长时间没有操作,刷新页面以后需要重新登录。 特点:(1)session是存储在服务器;    (2)session每个人(登陆者)存一份;    (3)sess...
php 输出文字到图片上(文字水印)的代码 php教程

php 输出文字到图片上(文字水印)的代码

分享一段php代码,可实现将文字写到图片上的功能,有需要的朋友参考下吧。 有时,我们需要将一些文字打在图片上,即所谓的文字水印。 本节分享的这段代码,借助php的图像函数,可以实现这样的功能。 如果文...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: