微信公众账号开发问题(PHP)
if(strcmp($Msgevent,"subscribe")==0){//订阅事件$event=$postObj->Event;}if(strcmp($event,"...
if (strcmp($Msgevent, "subscribe") == 0){ //订阅事件 $event = $postObj->Event; } if (strcmp($event, "CLICK") == 0 ) { $event = $postObj->EventKey; } //菜单的自定义的key值,可以根据此值判断用户点击了什么内容,从而推送不同信息 调试中可以识别$postObj->Event为CLICK,但不能识别 $postObj->EventKey。换句话说只有把后一个if语句注销后整个代码才不会出现异常,急求!
上面比较乱,这整理一下
调试中可以识别$postObj->Event为CLICK,但不能识别 $postObj->EventKey。换句话说只有把后一个if语句注销后整个代码才不会出现异常,急求! 展开
上面比较乱,这整理一下
调试中可以识别$postObj->Event为CLICK,但不能识别 $postObj->EventKey。换句话说只有把后一个if语句注销后整个代码才不会出现异常,急求! 展开
5个回答
推荐于2016-05-06 · 知道合伙人软件行家
关注
展开全部
呃,我觉得代码逻辑好像有些问题
在判断微信那边判断动作的顺序我想应该是
switch($postObj->MsgType){
case 'event':
switch($postObj->Event){
case 'subscribe':
//code
break;
case 'click':
switch($postObj->EventKey){
//code
}
break;
}
break;
}
更多追问追答
追问
我想问一下,为什么可以运行到case ‘click',但一有$postObj->EventKey就会出错,这是什么情况
追答
报的什么错啊,贴个消息呢
你确定你的事件来源是click么
你可以先 var_dump($postObj); 看看里边有没有eventkey这个属性
展开全部
PHP就是按照顺序从上往下执行的,你可以看看代理模式,看看能不能优化
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
//1.获取到微信推送过来post数据(xml格式)
//$postArr = $GLOBALS['HTTP_RAW_POST_DATA'];
$postArr = file_get_contents("php://input");
$postObj = simplexml_load_string( $postArr );
if( strtolower( $postObj->MsgType ) == 'event' ){
if( strtolower( $postObj->Event ) == 'subscribe' ){
$FromUserName = $postObj->ToUserName;
$ToUserName = $postObj->FromUserName;
$CreateTime = time();
$MsgType = "text";
$content = "123";
//$content = config('wxreply.wx_content');
$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);
}
}
//$postArr = $GLOBALS['HTTP_RAW_POST_DATA'];
$postArr = file_get_contents("php://input");
$postObj = simplexml_load_string( $postArr );
if( strtolower( $postObj->MsgType ) == 'event' ){
if( strtolower( $postObj->Event ) == 'subscribe' ){
$FromUserName = $postObj->ToUserName;
$ToUserName = $postObj->FromUserName;
$CreateTime = time();
$MsgType = "text";
$content = "123";
//$content = config('wxreply.wx_content');
$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);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
啥问题呢。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看不到你的问题. 不知道如何回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |