用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3521|回复: 8
收起左侧

[版本 3.x] 微信公众号后台用CI,老是出现该公众号暂时无法提供服务

[复制链接]
发表于 2015-5-7 00:58:22 CI中国手机版 | 显示全部楼层 |阅读模式
怎么也没找出毛病平。
发表于 2015-5-7 09:40:15 | 显示全部楼层
代码有问题。

点评

嗯,是$this->db->get_where()出错,只要()中有变量就出错,如果把变量替换成字符串就没问题  发表于 2015-5-7 22:16
发表于 2015-5-7 10:04:46 | 显示全部楼层
你可以将你的控制器内有可能会出现问题的部分使用CI的log类来输出记录.以此来看看每次程序是运行到哪出错的.然后来解决问题.

解决问题最怕的就是不知道问题在哪...

点评

现在知道了,也不知道怎么解决  发表于 2015-5-7 22:17
发表于 2015-6-7 21:35:44 | 显示全部楼层
我的也是啊,现在还不知道怎么解决,楼主解决了吗
发表于 2015-6-8 00:53:18 | 显示全部楼层
我的代码是这样的
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

define('TOKEN', '微信公众平台上的 Token');

class Weixin extends CI_Controller
{

    function __construct()
    {
        parent::__construct();

        // CI 2.0 以前需要这句话才可以获取 GET 参数,
        // 2.0 及新版则不需要,这里和微信公众平台无关
        parse_str($_SERVER['QUERY_STRING'], $_GET);
    }

    // 在微信平台上设置的对外 URL
    public function message()
    {
        if ($this->_valid())
        {
            // 判读是不是只是验证
            $echostr = $this->input->get('echostr');
            if (!empty($echostr))
            {
                $this->load->view('valid_view', array('output' => $echostr));
            }
            else
            {
                // 实际处理用户消息
                $this->_responseMsg();
            }
        }
        else
        {
            $this->load->view('valid_view', array('output' => 'Error!'));
        }
    }

    // 用于接入验证
    private function _valid()
    {
        $token = TOKEN;

        $signature = $this->input->get('signature');
        $timestamp = $this->input->get('timestamp');
        $nonce = $this->input->get('nonce');

        $tmp_arr = array($token, $timestamp, $nonce);
        sort($tmp_arr);
        $tmp_str = implode($tmp_arr);
        $tmp_str = sha1($tmp_str);

        return ($tmp_str == $signature);
    }

    // 这里是处理消息的地方,在这里拿到用户发送的字符串
    private function _responseMsg()
    {
        $post_str = file_get_contents('php://input');

        if (!empty($post_str))
        {
            // 解析微信传过来的 XML 内容
            $post_obj = simplexml_load_string($post_str, 'SimpleXMLElement', LIBXML_NOCDATA);
            $from_username = $post_obj->FromUserName;
            $to_username = $post_obj->ToUserName;
            // $keyword 就是用户输入的内容
            $keyword = trim($post_obj->Content);

            if (!empty($keyword))
            {
                // 文本类型的消息,本示例只支持文本类型的消息
                $type = "text";
                $content = $this->_parseMessage($keyword);

                $data = array(
                    'to' => $from_username,
                    'from' => $to_username,
                    'type' => $type,
                    'content' => $content,
                );
                $this->load->view('response_view', $data);
            }
            else
            {
                $type = "text";
                $content = "说点什么吧~呵呵~";

                $data = array(
                    'to' => $from_username,
                    'from' => $to_username,
                    'type' => $type,
                    'content' => $content,
                );
                $this->load->view('response_view', $data);
            }
        }
        else
        {
            $this->load->view('valid_view', array('output' => 'Error!'));
        }
    }

    // 解析用户输入的字符串
    private function _parseMessage($message)
    {
        log_message('debug', $message);

        // TODO: 在这里做一些字符串解析,比如分析某关键字,返回什么信息等等

        return '解析后的结果,会直接回复给用户';
    }
}


/* End of file weixin.php */
/* Location: ./application/controllers/weixin.php */
发表于 2015-6-8 00:53:43 | 显示全部楼层
主要是有时候是正常的,有时候是不正常的,输入的内容都是一样的
发表于 2016-9-14 16:49:50 | 显示全部楼层
我想添加自定义菜单,控制器怎么写,谁能帖出来?

本版积分规则