介绍
本篇文章给大家分享的是有关如何解决php下微信牌验证失败的问题,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
php下微信牌验证失败的解决办法:首先调用系统环境变量【$ _SERVER】,可以查看到HTTP请求的信息,然后将其写入到本地文件中,并用浏览器打开【url +日志。html】路径;最后在微信中点击提及即可。
引用><强> php下微信牌验证失败的解决办法:强>
我们在代码里面加入跟踪http记录的方法来查看我们自己的服务器收到了请求没有回应,还是微信根本没有发请求过来。
通过调用系统环境变量<代码> $ _SERVER> 代码,可以查看到http请求的信息,其中两项重要的是
把其加入代上面的代码中,并且将其写入到本地文件中来,全部代码
& lt; php ?/* https://www.php.cn/版权2013 www.doucube.com保留所有权利 */traceHttp (); 定义(“TOKEN",“weixin"); 美元wechatObj=new wechatCallbackapiTest (); 如果收取($ _GET [& # 39; echostr& # 39;])) { 美元wechatObj→有效(); 其他}{ 美元wechatObj→responseMsg (); } 类wechatCallbackapiTest { 公共职能有效() { $ echoStr=$ _GET [“echostr"]; if ($ this→checkSignature ()) { echo $ echoStr; 退出; } } 私人checkSignature()函数 { 美元签名=$ _GET [“signature"]; 时间戳美元=$ _GET [“timestamp"]; 目前美元=$ _GET [“nonce"]; 令牌美元=令牌; $ tmpArr=数组(令牌,时间戳,美元目前美元); 排序($ tmpArr); $ tmpStr=内爆($ tmpArr); (tmpStr=sha1美元tmpStr); 如果(tmpStr==美元签名){ 返回true; 其他}{ 返回错误; } } 公共函数responseMsg () { postStr=美元全局(“HTTP_RAW_POST_DATA"); 如果(!空(postStr美元)){ $ postObj=simplexml_load_string (postStr美元,& # 39;simplexmlelement # 39;, LIBXML_NOCDATA); fromUsername=postObj→美元fromUsername; toUsername=postObj→美元toUsername; (关键字=削减美元postObj→内容); $=时间(); $ textTpl=? lt; xml> & lt; ToUserName> & lt; ! [CDATA [% s]]祝辞& lt;/ToUserName> & lt; FromUserName> & lt; ! [CDATA [% s]]祝辞& lt;/FromUserName> & lt; CreateTime> % s & lt; MsgType> & lt; ! [CDATA [% s]]祝辞& lt;/MsgType> & lt; Content> & lt; ! [CDATA [% s]]祝辞& lt;/Content> & lt; FuncFlag> 0 & lt;/FuncFlag> & lt;/xml>“; 如果关键字==懊涝?“| | $关键字==?”) { $ msgType=皌ext"; $ contentStr=日期(“Y-m-d H:我:s"时间()); 美元resultStr=sprintf ($ textTpl fromUsername美元toUsername美元,美元,msgType美元,美元contentStr); echo $ resultStr; } 其他}{ 回声“,“; 退出; } } } traceHttp()函数 { 记录器(“\ n \ nREMOTE_ADDR:“$ _SERVER [“REMOTE_ADDR"]。(strstr ($ _SERVER (“REMOTE_ADDR") & # 39; 101.226 & # 39;) ?“;从WeiXin":“未知IP")); 记录器(“QUERY_STRING:“。$ _SERVER [“QUERY_STRING"]); } 函数记录器(log_content美元) { 如果收取($ _SERVER [& # 39; HTTP_APPNAME& # 39;])) {//SAE sae_set_display_errors(假); sae_debug ($ log_content); sae_set_display_errors(真正的); }{//其他地方 max_size=500000美元; $ log_filename=發og.xml"; 如果(file_exists (log_filename美元)和(abs(文件大小(log_filename美元))比;美元max_size)){拆开($ log_filename);} 写入log_filename美元,日期(& # 39;Y-m-d H:我:& # 39;)。美元log_content干净\ r \ n", FILE_APPEND); } } 祝辞;这样,当我们提交之后,就会生成一个<代码> log.html 代码>文件在当前目录
用浏览器直接打开填写的url,也会写一次文件。
直接用浏览器打开<代码> url +日志。>