接受微信用户发来的消息

接受微信用户发来的消息,并将消息回显给用户

思路:

首先使用 $postStr = file_get_contents(“php://input”); 接受微信服务器发送来的XML数据;
接着使用 simplexml_load_string() 函数对接受到的XML数据包进行解析 :
  $postObj = simplexml_load_string($postStr, ‘SimpleXMLElement’, LIBXML_NOCDATA);
然后处理接受解析后的数据,即将微信用户发来的消息回显给用户.
下面代码:

<?php

$wechatObj = new wechat_php();
$wechatObj->GetTextMsg();

class wechat_php {
    public function GetTextMsg() {
        //获取服务器POST请求中的数据
        //$postStr = $GLOBALS["HTTP_POST_DATA"];
        $postStr = file_get_contents("php://input");    //获取post数据

        if (!empty($postStr)) {
            /*
             *simplexml_load_string(string, class, option, ns, is_prefix);
             * 参数:
             *  string: 需要处理的XML字符串
             *  class: 用来指定新对象的,这里通常设置为 "SimpleXMLElement", 表示用来生成<br />一个简单的XML元素
             *  options: 指定附加的Libxml参数, 通常设置为 LIBXML_NOCDATA, 表示把CDATA<br />设置为文本节点
             *  ns: 一般省略
             *  is_prefix: 一般省略
             * 返回值:
             *  返回类 SimpleXMLElement 的一个对象,该对象的属性包括XMl的数据; 如果失败,则返回false
             */
            $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); //把XML字符串装载到对象中

            $fromUsername = $postObj->FromUserName; //微信用户名
            $toUsername = $postObj->ToUserName; //开发者微信号
            $msgType = $postObj->MsgType;   //消息类型
            $keyword = trim($postObj->Content); //文本消息内容, 该函数作用是移除字符串两端的空白字符
            $time = time(); //返回当前unix时间戳,并格式化为日期
            //回复消息的XML格式
            $textTpl = "<xml> 
                        <ToUserName><![CDATA[%s]]></ToUserName>
                        <FromUserName><![CDATA[%s]]></FromUserName>
                        <CreateTime>%s</CreateTime>
                        <MsgType><![CDATA[%s]]></MsgType>
                        <Content><![CDATA[%s]]></Content>
                        <FuncFlag>0</FuncFlag>
                        </xml>>";
            if (strtolower($msgType) != "text") {
                $msgType = "text";  //回复消息的类型
                $contentStr = "我只接受文本消息~";  //  回复的内容
            }
            else {
                if (!empty($keyword)) {
                    $msgType = "text";
                    $contentStr = "消息内容:".$keyword."\n";
                    $contentStr = $contentStr . "ToUsername" . $toUsername . "\n";
                    $contentStr = $contentStr . "fromUsername:" . $fromUsername;
                }
                else {
                    $contentStr = "请输入关键字...";
                }
            }
            $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
            echo $resultStr;
        }
        else {
            echo "";
            exit;
        }
    }
}
?>

将以上代码命名为 index.php 并上传到你所配置服务器的URL地址下即可.

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38253837/article/details/78510530
文章标签: php 微信 服务器
个人分类: 微信公众平台开发
想对作者说点什么? 我来说一句

java微信实例

2014年03月14日 13.91MB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭