1、在TP3.2里面,写一个控制器,用来校验微信公众号||小程序的服务器地址

  1. <?php
  2. namespace Home\Controller;
  3. use Think\Controller;
  4. header('Content-type:text');
  5. define("TOKEN", "x**");
  6.  
  7. class XiaoKeFuController extends Controller {
  8. public function index(){
  9. if (isset($_GET['echostr'])) {
  10. $this->valid();
  11. }else{
  12. $this->responseMsg();
  13. }
  14. }
  15.  
  16. public function valid()
  17. {
  18. $echoStr = $_GET["echostr"];
  19. if($this->checkSignature()){
  20. header('content-type:text');
  21. echo $echoStr;
  22. exit;
  23. }else{
  24. echo $echoStr.'+++'.TOKEN;
  25. exit;
  26. }
  27. }
  28.  
  29. private function checkSignature()
  30. {
  31. $signature = $_GET["signature"];
  32. $timestamp = $_GET["timestamp"];
  33. $nonce = $_GET["nonce"];
  34.  
  35. $token = TOKEN;
  36. $tmpArr = array($token, $timestamp, $nonce);
  37. sort($tmpArr, SORT_STRING);
  38. $tmpStr = implode( $tmpArr );
  39. $tmpStr = sha1( $tmpStr );
  40.  
  41. if( $tmpStr == $signature ){
  42. return true;
  43. }else{
  44. return false;
  45. }
  46. }
  47.  
  48. public function responseMsg()
  49. {
  50. $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
  51.  
  52. if (!empty($postStr)){
  53. $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
  54. $fromUsername = $postObj->FromUserName;
  55. $toUsername = $postObj->ToUserName;
  56. $keyword = trim($postObj->Content);
  57. $time = time();
  58. $textTpl = "<xml>
  59. <ToUserName><![CDATA[%s]]></ToUserName>
  60. <FromUserName><![CDATA[%s]]></FromUserName>
  61. <CreateTime>%s</CreateTime>
  62. <MsgType><![CDATA[%s]]></MsgType>
  63. <Content><![CDATA[%s]]></Content>
  64. <FuncFlag>0</FuncFlag>
  65. </xml>";
  66. if($keyword == "?" || $keyword == "?")
  67. {
  68. $msgType = "text";
  69. $contentStr = date("Y-m-d H:i:s",time());
  70. $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
  71. echo $resultStr;
  72. }
  73. }else{
  74. echo "";
  75. exit;
  76. }
  77. }
  78. }

2、服务器地址URL:

  1. https://m.*******.com/index.php/Home/XiaoKeFu/index

token:x**

TP3.2校验微信公众号||小程序 服务器地址的更多相关文章

  1. PHP原生实现,校验微信公众号||小程序服务器地址

    1.原生的.php文件:  test.php <?php header('Content-type:text'); define("TOKEN", "weixin& ...

  2. .NET Core 微信公众号小程序6种获取UnionID方法,你知道哪几种?

    前言 获取UnionID是开发微信公众号/小程序中很有必要的一个环节,特别是针对一个公司拥有多个公众号小程序而推出的机制,实现打通账户一体化,用UnionID来区分多平台的唯一性. 官方的解释:如果开 ...

  3. PHP 微信公众号/小程序获取openid,用户信息

    1.获取code (获得openid的前置条件) 地址:https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redi ...

  4. 微信公众号&小程序 -- 获取并解密用户数据(获取openId、unionId)

    本文转自https://my.oschina.net/u/3235888/blog/832895 前言 微信小程序API文档:https://mp.weixin.qq.com/debug/wxadoc ...

  5. 微信 公众号 小程序 授权 unionid 用户信息 实验总结

    -*-*-*-*-*-*-*-*-*--*-*-*-1.小程序通过code获取用户openid的接口,如果用户曾经授权并未过期,或者用户关注过同主体的公众号,会带回unionID,但没有用户头像等信息 ...

  6. apipost 调试微信公众号 小程序,秒生成文档工具

    1.将已经鉴权的公众号,小程序接口的 header头信息复制进来 2.设置文档展示字段

  7. [python]通过微信公众号“Python程序员”,编写python代码

    今天发现微信公众号中,居然可以编写python代码,很是惊喜,觉得蛮有趣的. 步骤如下: 1.关注微信公众号“Python程序员” 2.关注成功后,点击右下角的“潘多拉”->"Pyth ...

  8. weiphp 微信公众号用程序来设置指定内容消息回复业务逻辑操作

    微信公众号机器人回复设置 在公众号插件里面的Robot- Model- weixinAddonModel.php里面的 reply设置 reply($dataArr,$keywordArr) 解析方法 ...

  9. 使用 nodeJs 开发微信公众号(配置服务器)

    流程如下: 1. 申请微信公众号:企业号.服务号.订阅号(前两个要钱) 2. 配置微信公众号后台 选择基本配置,获得 AppId 和 AppSecret ,点击服务器配置 URL:你服务器地址,不能是 ...

随机推荐

  1. [翻译] FreeStreamer 在线流媒体播放

    FreeStreamer https://github.com/muhku/FreeStreamer Introduction FreeStreamer is an audio player engi ...

  2. JAVA压缩解压ZIP文件,中文乱码还需要ANT.JAR包

    package zip; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStrea ...

  3. [Android Pro] 控制硬加速 hardwareAccelerated 在3.0才有的

    从Android3.0 (API level11)开始,Android的2D显示管道被被设计得更加支持硬加速了.硬加速使用GPU承担了所有在View的canvas上执行的绘制操作. 启用硬加速最简单的 ...

  4. 在mac上命令行里面如何打开文本编辑器?

    在mac上命令行里面如何打开文本编辑器?   在linux命令行terminal上使用gedit直接就可以打开文本文件 那么在mac上面如何操作呢? 使用:open -a TextEdit setti ...

  5. LinkedList剖析

    第1部分 LinkedList介绍 LinkedList简介 LinkedList 是一个继承于AbstractSequentialList的双向链表.它也可以被当作堆栈.队列或双端队列进行操作. D ...

  6. 给定任意字符串,计算一共能组合成多少个单词bing

    CSDN编程挑战里的题目 例如有一个字符串"iinbinbing",截取不同位置的字符‘b’.‘i’.‘n’.‘g’组合成单词"bing".若从1开始计数的话, ...

  7. 集合 数组 定义 转换 遍历 Arrays API MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  8. DIV-CSS布局中position属性详解

    本文向大家描述一下DIV CSS布局中的position属性的用法,position属性主要有四种属性值,任何元素的默认position的属性值均是static,静态.这节课主要讲讲relative( ...

  9. Spring boot基础:配置文件配置变量、多环境的配置

    一.配置 resources下面application.properties 1.普通配置 resources下面application.properties,比如写上:server.port=909 ...

  10. 理解JavaScript私有作用域

    私有作用域:跟外界的变量方法毫不冲突,豪无关系 var str ="javascript"; (function(){ alert(str); //undefined var st ...