搜索
查看: 2347|回复: 0

PHP开发之用微信远程遥控服务器

[复制链接]

5378

主题

5381

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
17651
发表于 2018-2-11 11:46:16 | 显示全部楼层 |阅读模式

             摘要
微信公众好的开发很火,小程序更火。于是也凑个热闹,尝试了一把。
大致的功能还是有的,不过是不全,很多地方我没有进行处理。不过对于纯文本方式的交流,已经没有问题啦。


环境搭建
下面大致的讲讲微信公众号的原理吧。可能我理解的有些不到位,如果有些许不当,欢迎批评指教。
客户端发送给微信平台请求,微信平台将请求转发给私服,交给程序处理之后,获取到私服的处理结果,然后反馈给客户端。
当然,这其中起到核心作用的自然是“微信公众平台”啦。相当于提供了一个舞台,一个能让各位能人异士展现出各自的特色的平台。其实,不仅微信如此,阿里同样是这样,如此各大电商才能一展手脚不是。
开启配置
这第一步,就是先申请一个微信开发者账号,个人的话选择订阅号就足够了。网上相关的资料很多,也很详细,我就不多说了。咱们直奔主题好了。
首先登陆开发者账号成功后,开启服务器端的设置即可,如下图

开启完成,根据自己服务器的情况进行一下设置即可。

  
  • URL就是你的私服用于处理请求数据的地址
      
  • TOKEN就是一个令牌,随便设置。不过记住待会自己的代码上会用到。
      
  • 至于密钥嘛,没什么较大的作用,暂且可以先不用管。


    按需设置
    设置完,就可以启用了。这就好比家里的电线全部装修好了,现在要使用,按下开关一样。如下图

    启用服务器配置
    服务器环境
    关于服务器这块,官网上讲解的也是很详细的啦。
    https://mp.weixin.qq.com/wiki
    我们还可以下载官方的demo来模拟。

    官方样本
    代码也很简单。基本上学过了PHP基本语法的都能够看得懂。
    valid();
    class wechatCallbackapiTest
    {
    public function valid()
    {
    $echoStr = $_GET["echostr"];
    //valid signature , option
    if($this->checkSignature()){
    echo $echoStr;
    exit;
    }
    }
    public function responseMsg()
    {
    //get post data, May be due to the different environments
    $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
    //extract post data
    if (!empty($postStr)){
    /* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,
      the best way is to check the validity of xml by yourself */
    libxml_disable_entity_loader(true);
    $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
    $fromUsername = $postObj->FromUserName;
    $toUsername = $postObj->ToUserName;
    $keyword = trim($postObj->Content);
    $time = time();
    $textTpl = "
      
      
      %s
      
      
      0
      ";
    if(!empty( $keyword ))
    {
      $msgType = "text";
      $contentStr = "Welcome to wechat world!";
      $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
      echo $resultStr;
    }else{
      echo "Input something...";
    }
    }else {
    echo "";
    exit;
    }
    }
    private function checkSignature()
    {
    // you must define TOKEN by yourself
    if (!defined("TOKEN")) {
    throw new Exception('TOKEN is not defined!');
    }
    $signature = $_GET["signature"];
    $timestamp = $_GET["timestamp"];
    $nonce = $_GET["nonce"];
    $token = TOKEN;
    $tmpArr = array($token, $timestamp, $nonce);
    // use SORT_STRING rule
    sort($tmpArr, SORT_STRING);
    $tmpStr = implode( $tmpArr );
    $tmpStr = sha1( $tmpStr );
    if( $tmpStr == $signature ){
    return true;
    }else{
    return false;
    }
    }
    }
    ?>
  • 长春网站建设 网站设计 www.4435.cn 电话:136 2446 7185(于先生)
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    长春门户网站

    长春门户网是网民了解长春的网络窗口,同是提供长春地区百姓生活分类供求信息的门户网站,同时提供长春网站建设、长春网站设计,我们将逐步的完善网站分类信息资源;

    长春门户网二维码

    联系我们

    • 工作时间:早上8:00 - 晚上5:30
    • 投稿联系:13624467185(微信同号)
    • 反馈邮箱:5053050@QQ.com
    • 公司地址:吉林省长春市亚泰大街与自由大路交汇五环国际大厦1408室

    QQ|小黑屋|手机版|Archiver|cc! ( 吉ICP备2021009740号-8 )

    Powered by Discuz! X3.4 © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表