微信公众平台开发,php问题

问题描述

微信公众平台开发,php问题

我的目的是在微信里回复一个关键词,然后公众号就从指定文件夹的txt里获取相关信息并输出(以行为单位)
但是。。。每次到 $results=get_results($q);这条语句就不行了 求大神

 <?php
define("TOKEN", "weixin");
$time_start = microtime(true);
define('ROOT', dirname(__FILE__).'/');
define('MATCH_LENGTH', 0.1*1024*1024); //字符串长度 0.1M 自己设置,一般够了。
define('RESULT_LIMIT',100);
$wechatObj = new wechatCallbackapiTest();
if (isset($_GET['echostr'])) {
    $wechatObj->valid();
}else{
    $wechatObj->responseMsg();
}

class wechatCallbackapiTest
{
    public function valid()
    {
        $echoStr = $_GET["echostr"];
        if($this->checkSignature()){
            echo $echoStr;
            exit;
        }
    }

    private function checkSignature()
    {
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];

        $token = TOKEN;
        $tmpArr = array($token, $timestamp, $nonce);
        sort($tmpArr);
        $tmpStr = implode( $tmpArr );
        $tmpStr = sha1( $tmpStr );

        if( $tmpStr == $signature ){
            return true;
        }else{
            return false;
        }
    }

      function my_scandir($path){//获取数据文件地址
        $filelist=array();
        if($handle=opendir($path)){
        while (($file=readdir($handle))!==false){
         if($file!="." && $file !=".."){
             if(is_dir($path."/".$file)){
                $filelist=array_merge($filelist,my_scandir($path."/".$file));
                 }else{
                  $filelist[]=$path."/".$file;
                 }
            }
        }
     }
    closedir($handle);
    return $filelist;
}

   function get_results($keyword){//查询
    $return=array();
    $count=0;
    $datas=my_scandir(ROOT."kieoidfrwq!!1123@#fewf"); //数据库文档目录
    if(!empty($datas))foreach($datas as $filepath){
        $filename = basename($filepath);
        $start = 0;
        $fp = fopen($filepath, 'r');
          while(!feof($fp)){
                fseek($fp, $start);
                $content = fread($fp, MATCH_LENGTH);
                $content.=(feof($fp))?"n":'';
                $content_length = strrpos($content, "n");
                $content = substr($content, 0, $content_length);
                $start += $content_length;
                $end_pos = 0;
                while (($end_pos = strpos($content, $keyword, $end_pos)) !== false){
                    $start_pos = strrpos($content, "n", -$content_length + $end_pos);
                    $start_pos = ($start_pos === false)?0:$start_pos;
                    $end_pos = strpos($content, "n", $end_pos);
                    $end_pos=($end_pos===false)?$content_length:$end_pos;
                    $return[]=array(
                       'f'=>$filename,
                       't'=>trim(substr($content, $start_pos, $end_pos-$start_pos))
                         );
                    $count++;
                    if ($count >= RESULT_LIMIT) break;
                  }
                unset($content,$content_length,$start_pos,$end_pos);
                if ($count >= RESULT_LIMIT) break;
                  }
        fclose($fp);
       if ($count >= RESULT_LIMIT) break;
     }
     return $return;
}

    public function responseMsg()
    {
        $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

        if (!empty($postStr)){
            $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
            $fromUsername = $postObj->FromUserName;
            $toUsername = $postObj->ToUserName;
            $keyword = trim($postObj->Content);
            $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>";
              $msgType="text";
    set_time_limit(0);
    $q=strip_tags(trim($keyword);
     $results=get_results($q);
      $count=count($results);

 if(!empty($results)){
         foreach($results as $v){
               $contentStr =$contentStr.'From_['.$v['f'].']_Datas 。Content: '.$v['t'];}}
              $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
             echo $resultStr;
        }else{
            echo "";
            exit;
        }
    }
}
?>
时间: 2024-05-21 19:49:21

微信公众平台开发,php问题的相关文章

微信公众平台开发人员POSTXML助手[php版]

估计网上搜索有微信开发不返回信息的,各种问题出现,但是是服务端模拟的,没法测试,今天我就写了一个类,专门测试微信开发中遇到的问题,这个类使用简单,并且能够模拟提交,返回模拟的微信服务器返回的信息!这样开发起来就很简单明了了!需要的可以拿走!   <?php /* *@author widuu *@time 2013-7-4 *@模拟提交测试微信数据 */ class WinXinPost{ private $event = ""; private $content = "

对微信公众平台开发的消息处理

这几天有点空,做了个Android App后,想着对接一下公司的微信平台,以便让客户更方便查询,在研究微信平台中,要注意以下几点: 1.微信验证消息真实性是用Get方式到你提交的url 2.用户发送的消息.事件等都是通过Post方式提交过来 3.微信服务器端发送过来的,是xml格式,通过HttpRequest.InputStream获取 4.在处理用户消息的时候,如果你要返回信息的话,您只要输出xml格式的字符串就可以了. 如何读取微信客户端信息: var stream = Request.In

微信公众平台开发入门教程

在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/JS等基础. 我们将使用微信公众账号方倍工作室作为讲解的例子,二维码见底部. 本系列教程将引导你完成如下任务: 创建新浪云计算平台应用 启用微信公众平台开发模式 基础接口消息及事件 微信公众平台PHP SDK 微信公众平台开发模式原理 开发天气预报功能 第一章 申请服务器资源 创建新浪云计算应用 申请账号 我们使用SAE新浪云计算平台作为服务器资源,并且申请PHP环境+M

微信公众平台开发 JS-SDK开发(图像接口实例)

本文并非是对微信JS-SDK说明文档的复制,而是通过一个简单的例子来更深入的了解使用微信JS-SDK,具体文档请参考官方说明文档<微信JS-SDK说明文档>.微信公众平台面向开发者开放微信内网页开发工具包(微信JS-SDK),通过微信JS-SDK提供的11类接口集,开发者不仅能够在网页上使用微信本身的拍照.选图.语音.位置等基本能力,还可以直接使用微信分享.扫一扫.卡券.支付等微信特有的能力,为微信用户提供更优质的网页体验. 微信JS-SDK提供的11类接口(分享接口.图像接口.音频接口.智能

微信公众平台开发实现2048游戏的方法_php实例

本文实例讲述了微信公众平台开发实现2048游戏的方法.分享给大家供大家参考.具体如下: 一.2048游戏概述 <2048>是比较流行的一款数字游戏.原版2048首先在github上发布,原作者是Gabriele Cirulli.它是基于<1024>和<小3传奇>的玩法开发而成的新型数字游戏 . 随后2048便出现各种版本,走各大平台.由Ketchapp公司移植到IOS的版本最为火热,现在约有1000万下载,其名字跟原版一模一样.衍生版中最出名的是<2048六边形&

基于php的微信公众平台开发入门实例_php实例

本文实例讲述了基于php的微信公众平台开发方法.分享给大家供大家参考.具体如下: 最近在做微信公众平台开发,一口气写了二十几个功能,挺有意思的- 今天来分享一下开发经验~ 微信公众平台提供的接口很简单,先看看消息交互流程: 说的通俗一些,用户使用微信发送消息 -> 微信将数据发送给开发者 -> 开发者处理消息并返回数据至微信 -> 微信把返回数据发送给用户,期间数据交互通过XML完成,就这么简单.   下面写个实例,开发微信智能聊天机器人:  1. 注册微信公众平台账号 微信公众平台:

图片-微信公众平台开发调用上传素材接口 为什么一直返回48001

问题描述 微信公众平台开发调用上传素材接口 为什么一直返回48001 解决方案 说的很清楚,没有验证成功,检查你的token

《微信公众平台开发最佳实践》——导读

前 言 出版说明 自从方倍工作室在博客园推出微信公众平台开发系列教程后,受到广大微信开发人员及爱好者的热情关注,相关文章的日访问量高达2万人次,而<微信公众平台开发入门教程>的阅读量超过50万,博客访问量总计超过500万,成为微信公众平台开发更新最快,传播最广.受众最多.资料最全的博客,很多博文被许多有影响力的网站转载,并被各大搜索引擎收录且排名靠前,这些是我们始料未及的. 然而更让人高兴的是,很多开发者通过学习我们的教程掌握了微信公众平台开发技术,并且通过微信开发赚到了钱.2013年10月1

《微信公众平台开发:从零基础到ThinkPHP5高性能框架实践》——2.2 程序开发基础

2.2 程序开发基础 PHP(超文本预处理器,Hypertext Preprocessor)于1994年由Rasmus Lerdorf创建,他也被称为"PHP之父".PHP是一种通用开源脚本语言.其语法吸收了C语言.Java和Perl的特点,便于学习,使用广泛,主要适用于Web开发领域.PHP是最受欢迎的Web开发语言之一,也是微信公众平台开发使用最广泛的语言. SQL是结构化查询语言(Structured Query Language)的简称,它是一种数据库查询和程序设计语言,用于存