php一个神奇的问题

fieldisme 2017-11-20 11:38:55
一个很奇怪的问题,调用同一个函数,同样的调用方式,同样的参数,返回同样的值,却得到不同显示结果。具体情况如下:
index.php中的代码:

include 'public_function.php';//函数在这个文件中
..........
class XXXXX
{
//接收事件消息
private function receiveEvent($object)
case "subscribe":
include 'SubEvent.php';//SubEvent在这个文件中
//$content=SendTextImage($object,"欢迎回到公众号","欢迎","http://xxxxxx");
$content=SubEvent($object);
break;
......
set_loger("返回的信息是:$content");
echo #content;
}

SubEvent.php文件:

<?php

//关注事件
function SubEvent($object)
{
$result=SendTextImage($object,"欢迎回到公众号","欢迎","http://xxxxxx");
return $result;
}

问题是:这是微信公众号后台处理程序,在index.php中直接调用 //$content=SendTextImage($object,"欢迎回到公众号","欢迎","http://xxxxxx"); 一切正常,而在subevent.php中调用这句,微信接收不到图文。而且,set_loger函数输出的数据,两种调用方法得到的结果竟然是一样的
...全文
177 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fieldisme 2017-11-21
  • 打赏
  • 举报
回复
还有,这段代码在index.php内时是成功的,我只是想把它独立成一个文件
引用 4 楼 Mechnaic 的回复:
楼主解决了吗 我也遇见这个问题了
没解决,暂时所有程序写在同一个文件中,先用着,看以后能不能解决
fieldisme 2017-11-20
  • 打赏
  • 举报
回复
请大神们看下这段代码有什么问题吧,加上这段代码后,再次调用失败,全部注释掉了再调用还是失败,没加过这段代码调用是成功的

<?php
function event_subscribe($object)
{set_error_handler("customError");
        //第一步:查找OpenID是否已经注册过$object->FromUserName
        //打开数据库
        $result="";//返回值
        $FatherID=0;//上线ID
        $cansu=0;//二维码参数
        ShowMessage("处理关注消息(待删除)");
        $conn=my_sql_open();
        ShowMessage("数据库已打开(待删除)");
        if(!$conn)//打开数据库失败
        {
        	ShowMessage("Event_Attention函数中打开数据库函数返回空值");
        }
		else//打开数据库成功,查找openkey
		{ShowMessage("准备查询openid,(待删除)查询的openid号是:".$object->FromUserName);
		
			$sql="SELECT ID FROM tab_id WHERE OpenID='".$object->FromUserName."' limit 1";
			$ret=mysql_query($sql,$conn);
			//is_resource($ret)检查ret是否资源类型
			//mysql_num_rows($ret)检查返回的行数
			if(!is_resource($ret))//查询失败
			{
				//$result=$this->transmitText($object,"数据库错误,请重新操作");
        		ShowMessage(0,"Event_Attention函数中查询微信OpenID在否存在数据库中失败");
			}
			else //查询成功
			{				
				ShowMessage(0,"查找ipenid完成,准备添加到数据库(待删除)");
				//检查微信openid是否已经存在
				if(!mysql_num_rows($ret))//没有存在,也就是没有关注过本公众号,则创建ID
				{					
					ShowMessage(0,"用户是新用户,没有关注过本公众号(待删除)");
					//检查二维码是否带参数
					if(empty($object->EventKey))//有二维码参数
					{ShowMessage(0,"通过扫描带参数的二维码进入");
						$cansu=(!empty($object->EventKey))?(str_replace("qrscene_","",$object->EventKey)):"";//获得二维码参数
						//如果二维码参数<=100000,说明是永久二维码,要寻找上线
						if($cansu<=100000)
						{
							$sql="SELECT ewm_gsID FROM tab_yjewm WHERE wem_cs=".$cansu." limit 1";
							$ret=mysql_query($sql,$conn);
							if(!$ret)//查询失败则不再设上线
							{
								ShowMessage(0,"Event_Attention函数中查询二维码对应的用户ID失败");
								$FatherID=0;
							}
							else//查询成功 
							{
								$row=mysql_fetch_array($result);
								if(!$row)//没有查找到二维码对应的上线,则不再设上线
								{
									ShowMessage(0,"Event_Attention函数中查询二维码没有对应的上线");
									$FatherID=0;
								}
								else //找到了上线,取出上线ID
								{
									$FatherID=$row[0];
								}
							}
						}
						else 
						{
							$FatherID=$cansu-100000;//这就是上线ID
						}
						if($FatherID>0)//有上线,则上线送10个积分
						{
							Jf_Change($FatherID,10,"有新用户通过扫描你的推广二维码关注本微信号,获得10个积分");
						}						
					}
					//没有关注过本微信,创建ID,上线值取$cansu
					ShowMessage(0,"准备创建用户ID与OpenID的绑定");
					$sql="INSERT INTO tab_id (Father,JF,OpenID) VALUES(".$cansu.",1,'".$object->FromUserName."')";	
					$ret=mysql_query($sql,$conn);
					$myid=mysql_insert_id($conn);//取得最后一次插入操作时自动生成的ID
					if(!$ret)//如果添加出错
					{
						ShowMessage(0,"Event_Attention函数中为用户创建ID失败");
					}
					else 
					{
						//把得到一个积分的消息保存起来
						Jf_Change($myid,1,"第一次关注本微信号,赠送1个积分",false);		
					}														
					//数据库操作结束,现在向微信发送一条欢迎关注的消息
					$result = SendTextImage($object,"你好,欢迎关注","欢迎","http://w9wbt.com/wei_xin_public/html/game.html");
				}
				else //该用户曾经关注过本公众号,
				{//$row=mysql_fetch_array($result);
				//要发送欢迎回来的消息	
				$result=SendTextImage($object,"欢迎回到来","欢迎","http://w9wbt.com/wei_xin_public/html/game.html");
				}
			}
		}
		return $result;			
}
?>
fieldisme 2017-11-20
  • 打赏
  • 举报
回复
太神奇了,重新换了一个文件subscribe.php,在里面定义一个函数来调用SendTextImage成功,谁能告诉我是为什么?
fieldisme 2017-11-20
  • 打赏
  • 举报
回复
更神奇的是,SendTextImage函数在另一个php文件RecvText.php中调用又是正常的,所有文件都设置为UTF_8编码,现在SubEvent.php文件中的所有代码都在上面了
Mechnaic 2017-11-20
  • 打赏
  • 举报
回复
楼主解决了吗 我也遇见这个问题了

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧