微信公众平台开发 微信公众平台开发者 微信公众平台开发模式 签名校验 消息响应
作者:方倍工作室
原文:http://www.cnblogs.com/txw1958/archive/2013/05/08/weixin-if29-valid-responsemsg.html
微信公众平台在启用接口的时候使用valid函数进行验证,
<span define</span>("TOKEN", "方倍工作室"<span );
</span><span $wechatObj</span> = <span new</span><span wechatCallbackapiTest();
</span><span $wechatObj</span>->valid();但在验证完成后,就开始执行对消息的响应,不再使用valid函数,需要把他注释掉,并且设置成responseMsg()
如下
立即学习“PHP免费学习笔记(深入)”;
<span define</span>("TOKEN", "方倍工作室"<span );
</span><span $wechatObj</span> = <span new</span><span wechatCallbackapiTest();
</span><span $wechatObj</span>->responseMsg();这样操作,其实比较麻烦,因为要回头来改函数。
为什么要用两个不同函数来处理呢?这是因为两个不同的函数执行不同的功能,
当执行valid函数时,提交的是验证字符串,用于保证url和token填写提交正确,这个时候微信服务器提交给url的请求是
<span signature</span>=eded789463180edf6c13691398d0cb4c85fb0e23<span &echostr</span>=5838479218127813673<span &stamp</span>=1359100969<span &nonce</span>=1359376876
而当响应消息的时候,已经可以确定url地址正确了,这时候主要是获得回复的xml了,这时提交的请求类似如下:
<span signature</span>=ba7f5cf8aee512037e5a669596f6f64a8e763d7c<span ×tamp</span>=1368016183<span &nonce</span>=1368211921
我们回头来看一下valid函数
<span public</span> <span function</span><span valid()
{
</span><span $echoStr</span> = <span $_GET</span>["echostr"<span ];
</span><span //</span><span valid signature , option</span>
<span if</span>(<span $this</span>-><span checkSignature()){
</span><span echo</span> <span $echoStr</span><span ;
</span><span exit</span><span ;
}
}</span>其中有一个_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变量,而在响应消息中是没有的,
<span signature</span>=eded789463180edf6c13691398d0cb4c85fb0e23<span &<span <strong><span echostr</span></strong></span></span>=5838479218127813673<span &stamp</span>=1359100969<span &nonce</span>=1359376876
那么我们用同样的思路,判断_GET变量中是否有这个echostr变量,来实现区分两种不同的请求:
最终代码类似如下:
<span //</span><span define your token</span>
<span define</span>("TOKEN", "方倍工作室"<span );
</span><span $wechatObj</span> = <span new</span><span wechatCallbackapiTest();
</span><span if</span> (<span isset</span>(<span $_GET</span>['echostr'<span ])) {
</span><span $wechatObj</span>-><span valid();
}</span><span else</span><span {
</span><span $wechatObj</span>-><span responseMsg();
}</span>
至此,我们就不用再来注释一个启用另一个了,减少了一次麻烦。
微信是一款手机通信软件,支持通过手机网络发送语音短信、视频、图片和文字。微信可以单聊及群聊,还能根据地理位置找到附近的人,带给大家全新的移动沟通体验,有需要的小伙伴快来保存下载体验吧!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号