问答详情
源自:-

为什么我的单图文出不来呢?

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
    public function index(){
        // 获得参数signature nonce token timestamp
        $nonce = $_GET['nonce'];
        $token = 'family';
        $timestamp = $_GET['timestamp'];
        $signature = $_GET['signature'];
        $echostr = $_GET['echostr'];

        $arr = array($nonce, $token, $timestamp);
        sort($arr);

        $tempstr = implode('', $arr);
        $tempstr = sha1($tempstr);

        if($tempstr == $signature && $echostr)
        {
            // 第一次接入微信API接口时验证,因为第一次有四个参数发送过来,其他情况下发送三个
            echo $echostr;
            exit;
        }else
        { 
            $this->responseMsg();
        }
    }

    public function responseMsg()
    {
        // 获取微信推送过来的post数据(XML格式)
        $postArr = $GLOBALS['HTTP_RAW_POST_DATA'];
        // 处理消息类型,并设置回复类型和内容
        /*<xml>
        <ToUserName><![CDATA[toUser]]></ToUserName>  开发者微信
        <FromUserName><![CDATA[FromUser]]></FromUserName> 发送发账号
        <CreateTime>123456789</CreateTime>
        <MsgType><![CDATA[event]]></MsgType>  消息类型
        <Event><![CDATA[subscribe]]></Event>    事件类型
        </xml>*/
        // simplexml_load_string();将XML转换成对象
        $postObj = simplexml_load_string($postArr);

        // 判断该数据包是否是消息订阅的时间推送
        if($postObj->MsgType == 'event')
        {
            // 判断是否是关注事件
            if ($postObj->Event == 'subscribe') {
                // 回复用户消息
                $ToUserName = $postObj->FromUserName;
                $FromUserName = $postObj->ToUserName;
                $CreateTime = time();
                $MsgType = 'text';
                $Content = '欢迎关注清风草'.'\n'.$postObj->ToUserName.'-'.$postObj->FromUserName;
                $template = "<xml>
                            <ToUserName><![CDATA[%s]]></ToUserName>
                            <FromUserName><![CDATA[%s]]></FromUserName>
                            <CreateTime>%s</CreateTime>
                            <MsgType><![CDATA[%s]]></MsgType>
                            <Content><![CDATA[%s]]></Content>
                            </xml>";
                $info = sprintf($template, $ToUserName, $FromUserName, $CreateTime, $MsgType, $Content);
                echo $info;
            }
        }
		
		
		/*// 回复纯文本
		if($postObj->MsgType == 'text')
        {
            // 判断是否是关注事件
            switch(strtolower(trim($postObj->Content))) {
				case 'php':
					$Content = 'php相关知识thinkphp框架';
				break;
				case 1:
					$Content = '这是数字1';
				break;
				case 'test':
					$Content = '请不要在这里输入test英文字段';
				break;
				case 'i love you':
					$Content = 'Me,Too !';
				break;
				case 'Mother':
					$Content = 'The Mothers Day in next monday !';
				break;
			}
                // 回复用户消息
                $ToUserName 	= $postObj->FromUserName;
                $FromUserName 	= $postObj->ToUserName;
                $CreateTime 	= time();
                $MsgType 		= 'text';
                $template 		= "<xml>
                            <ToUserName><![CDATA[%s]]></ToUserName>
                            <FromUserName><![CDATA[%s]]></FromUserName>
                            <CreateTime>%s</CreateTime>
                            <MsgType><![CDATA[%s]]></MsgType>
                            <Content><![CDATA[%s]]></Content>
                            </xml>";
                echo sprintf($template, $ToUserName, $FromUserName, $CreateTime, $MsgType, $Content);          
        }*/
	
		
		
		
		// 用户发送tuwen1关键字的时候,回复一个单图文
		if( strtolower($postObj->MsgType == 'text') && trim( $postObj->Content == 'tuwen1')){
			$ToUserName 	= $postObj->FromUserName;
                        $FromUserName 	= $postObj->ToUserName;
			$arr  =  array(
				
				array(
					'title' => 'Qingfeng',
					'description' => "It is very cool",
					'picUrl' => 'http://scgg.gyyx.cn/wd/images/wd170328/wd_bd_logo.png',
					'url' => 'http://www.gyyx.cn/',
				),
			);
			$template = "<xml>
						<ToUserName><![CDATA[%s]]></ToUserName>
						<FromUserName><![CDATA[%s]]></FromUserName>
						<CreateTime>%s</CreateTime>
						<MsgType><![CDATA[%s]]></MsgType>
						<ArticleCount>".count($arr)."</ArticleCount>
						<Articles>";
						
			foreach($arr as $k => $v){				
				$template .= "<item>
							<Title><![CDATA[".$v['title']."]]></Title> 
							<Description><![CDATA[".$v['description']."]]></Description>
							<PicUrl><![CDATA[".$v['picUrl']."]]></PicUrl>
							<Url><![CDATA[".$v['url']."]]></Url>
							</item>";
			}
						
			$template .= "</Articles>
						  </xml>";
						  
			echo sprintf($template,$FromUSerName,$ToUserName,time(),'news');
		}else{
			switch(trim($postObj->Content)) {
				case 'php':
					$Content = 'php相关知识thinkphp框架';
				break;
				case 1:
					$Content = '这是数字1';
				break;
				case 'test':
					$Content = '请不要在这里输入test英文字段';
				break;
				case 'i love you':
					$Content = 'Me,Too !';
				break;
				case 'mother':
					$Content = 'mother loves father over forever !';
				break;
			}
                // 回复用户消息
                $ToUserName 	= $postObj->FromUserName;
                $FromUserName 	= $postObj->ToUserName;
                $CreateTime 	= time();
                $MsgType 		= 'text';
                $template 		= "<xml>
                            <ToUserName><![CDATA[%s]]></ToUserName>
                            <FromUserName><![CDATA[%s]]></FromUserName>
                            <CreateTime>%s</CreateTime>
                            <MsgType><![CDATA[%s]]></MsgType>
                            <Content><![CDATA[%s]]></Content>
                            </xml>";
                echo sprintf($template, $ToUserName, $FromUserName, $CreateTime, $MsgType, $Content);
		}
	}
}
?>


提问者:小官大人 2017-05-13 11:43

个回答

  • 小官大人
    2017-05-15 09:21:43

    怎么没人回答呢。。。。。