微信公众号遇到的问题 我用wx_sample.php文件,公众号无法回复信息。。已经调用了responseMsg(),token验证通过了,其他地方没有修改,只修改了responseMsg调用这里 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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)){ //这里就是xml技术解析数据 libxml_disable_entity_loader(true); $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $fromUsername = $postObj->FromUserName; $toUsername = $postObj->ToUserName; $keyword = trim($postObj->Content); //这个$event就是事件具体内容 $event = $postObj->Event; //如果微信开发时,当需要调试输出信息,将信息输出到文件中 file_put_contents('weixin.log',$fromUsername.'->'.$toUsername.'-'.$keyword,FILE_APPEND); $time = time(); $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>"; switch ($postObj->MsgType) { case 'event': //如果是用户订阅事件 if ($event == 'subscribe') { $contentStr = "感谢订阅"; $msgType = "text"; $textTpl = sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr); echo $textTpl; } break; case 'text': if($keyword == '听歌') { //返回歌单 $contentStr = "欢迎来到点歌系统\r\n\r\n 歌单如下 \r\n\r\n1.甜蜜蜜\r\n2.哈哈哈\r\n3.belongto me\r\n"; //返回 $msgType = 'text'; $resultStr = sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr); echo $resultStr; }elseif (preg_match("/^[1-9](\d){0,2}$/", $keyword)) { if ($keyword == '1') { $desc = 'first song'; }elseif ($keyword == '2'){ $desc == 'second song'; }elseif ($keyword == '3'){ $desc = 'third song'; }else { $desc == 'default song'; $keyword == '1'; } //返回音乐 $musicTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[music]]></MsgType> <Music> <Title><![CDATA[好听到爆]]></Title> <Description><![CDATA[%s]]></Description> <MusicUrl><![CDATA[%s]]></MusicUrl> <HQMusicUrl><![CDATA[%s]]></HQMusicUrl> </Music> </xml>"; //获得音乐播发的地址 $musicUrl = "http://peiyu.ngrok.cc/weixin/mp3/{$keyword}.mp3"; //填充返回的结果 $resultStr = sprintf($musicTpl,$fromUsername,$toUsername,$time,$desc,$musicUrl,$musicUrl); //返回 echo $resultStr; } else{ //输入错误 返回提示 $contentStr = "你的输入有问题,请重新输入"; //返回 $msgType = 'text'; $resultStr = sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr); echo $resultStr; } break; default: echo "更多功能开发中-------"; break; } } } php文字转化为阿拉伯数字 哪里有好的LINUX收费空间?? .htaccess URL重写问题 新手 关于范围日期显示 急~~~ 谢谢 都什么方式可以解释php PHP自动切掉小数点后面的00 该如何处理才能保存小数后面的00 关于window.confirm PHP 代码 在下来框判断报错 小问题.如何显示MYSQL里带换行的内容?急 急 php做网站的理论问题请教!! phpexcel 读取时 有值时空的 php里get的数据怎么保存到本地呀,完全小白,求指导
{
//get post data, May be due to the different environments
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //extract post data
//就是说如果我们的请求数据不是为空
if (!empty($postStr)){
//这里就是xml技术解析数据
libxml_disable_entity_loader(true);
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$keyword = trim($postObj->Content);
//这个$event就是事件具体内容
$event = $postObj->Event;
//如果微信开发时,当需要调试输出信息,将信息输出到文件中
file_put_contents('weixin.log',$fromUsername.'->'.$toUsername.'-'.$keyword,FILE_APPEND);
$time = time();
$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>";
switch ($postObj->MsgType)
{
case 'event':
//如果是用户订阅事件
if ($event == 'subscribe') {
$contentStr = "感谢订阅";
$msgType = "text";
$textTpl = sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr);
echo $textTpl;
}
break;
case 'text':
if($keyword == '听歌')
{
//返回歌单
$contentStr = "欢迎来到点歌系统\r\n\r\n 歌单如下 \r\n\r\n1.甜蜜蜜\r\n2.哈哈哈\r\n3.belongto me\r\n";
//返回
$msgType = 'text';
$resultStr = sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr);
echo $resultStr;
}elseif (preg_match("/^[1-9](\d){0,2}$/", $keyword))
{
if ($keyword == '1') {
$desc = 'first song';
}elseif ($keyword == '2'){
$desc == 'second song';
}elseif ($keyword == '3'){
$desc = 'third song';
}else {
$desc == 'default song';
$keyword == '1';
}
//返回音乐
$musicTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[music]]></MsgType>
<Music>
<Title><![CDATA[好听到爆]]></Title>
<Description><![CDATA[%s]]></Description>
<MusicUrl><![CDATA[%s]]></MusicUrl>
<HQMusicUrl><![CDATA[%s]]></HQMusicUrl>
</Music>
</xml>";
//获得音乐播发的地址
$musicUrl = "http://peiyu.ngrok.cc/weixin/mp3/{$keyword}.mp3";
//填充返回的结果
$resultStr = sprintf($musicTpl,$fromUsername,$toUsername,$time,$desc,$musicUrl,$musicUrl);
//返回
echo $resultStr;
}
else{
//输入错误 返回提示
$contentStr = "你的输入有问题,请重新输入";
//返回
$msgType = 'text';
$resultStr = sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr);
echo $resultStr;
}
break;
default:
echo "更多功能开发中-------";
break;
}
}
}