接受微信用户发来的消息

##

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

###思路:
首先使用 $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地址下即可.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值