#CI框架控制器
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/***
CI框架整合微信
2014.9.15
作者:黄国金
**/
define('TOKEN', 'hgj123');
class Weixin extends CI_Controller
{ #构造函数
function __construct()
{
#调用父类的构造函数
parent::__construct();
#以get的形式获取参数
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 = 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 = 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($keyword)
{
#开启错误日记
log_message('debug', $keyword);
#处理用户的关键字
return '你好~!~';
}
}
#输出界面  view试图
<xml>
<ToUserName><![CDATA[<?=$to?>]]></ToUserName>
<FromUserName><![CDATA[<?=$from?>]]></FromUserName>
<CreateTime><?=time()?></CreateTime>
<MsgType><![CDATA[<?=$type?>]]></MsgType>
<Content><![CDATA[<?=$content?>]]></Content>
<FuncFlag>0</FuncFlag>
</xml>

CI框架整合微信公共平台接口的更多相关文章

  1. 微信公众号开发系列-13、基于RDIFramework.NET框架整合微信开发应用效果展示

    1.前言 通过前面一系列文章的学习,我们对微信公众号开发已经有了一个比较深入和全面的了解. 微信公众号开发为企业解决那些问题呢? 我们经常看到微信公众号定制开发.微信公众平台定制开发,都不知道这些能给 ...

  2. PHP版微信公共平台消息主动推送,突破订阅号一天只能发送一条信息限制

    2013年10月06日最新整理. PHP版微信公共平台消息主动推送,突破订阅号一天只能发送一条信息限制 微信公共平台消息主动推送接口一直是腾讯的私用接口,相信很多朋友都非常想要用到这个功能. 通过学习 ...

  3. CI框架整合UEditor编辑器上传功能

    最近项目中要使用到富文本编辑器,选用了功能强大的UEditor,接下来就来讲讲UEditor编辑器的上传功能整合. 本文UEditor版本:ueditor1_4_3_utf8_php版本 第一步:部署 ...

  4. Java微信公众平台接口封装源码分享

    前言:      这篇博客是在三月初动手项目的时候准备写的,但是为了完成项目只好拖延时间写这篇博客,顺便也可以在项目中应用我自己总结的的一些经验.今天看来,这些方法的应用还是可以的,至少实现了我之前的 ...

  5. ASP.NET MVC 微信公共平台开发之获取用户消息并处理

    ASP.NET MVC 微信公共平台开发 获取用户消息并处理 获取用户消息 用户发送的消息是在微信服务器发送的一个HTTP POST请求中包含的,获取用户发送的消息要从POST请求的数据流中获取 微信 ...

  6. ASP.NET MVC 微信公共平台开发之验证消息的真实性

    ASP.NET MVC 微信公共平台开发 验证消息的真实性 在MVC Controller所在项目中添加过滤器,在过滤器中重写 public override void OnActionExecuti ...

  7. ASP.NET MVC 微信公共平台开发之 微信接入

    ASP.NET MVC 接入微信公共平台 申请微信公共账号 既然要接入微信公共平台,微信公共号是必须的(当然如果只是测试的话也可以申请微信公共平台接口测试账号),来这里微信公共平台 申请微信公共号(注 ...

  8. 微信公众平台接口API

    <?php /** * Author: helen * CreateTime: 2015/12/9 20:14 * description: 微信公众平台接口API */ class Wecha ...

  9. Ci框架整合smarty模板引擎

    Ci框架整合smarty模板引擎 备注:下载smarty时,最好选择2.6版本,其他测试有坑,ci可以是2.2或其他 大体思路:将smarty封装成ci框架的一个类,然后重新配置一下smarty,这样 ...

随机推荐

  1. 在weblogic上配置数据源

    转自:http://blog.csdn.net/weijie_search/article/details/2756585 旁白 这是在weblogic9.0+mysql5.1的环境下配置的数据源.其 ...

  2. 请远离include_once和require_once[转]

    来自:http://www.poluoluo.com/jzxy/201306/216921.html 尽量使用include, 而不是include_once, 理由是 include_once需要查 ...

  3. DataBase 之 拉链表结构设计

    一.概念 拉链表是针对数据仓库设计中表存储数据的方式而定义的,顾名思义,所谓拉链,就是记录历史.记录一个事物从开始,一直到当前状态的所有变化的信息. 在历史表中对客户的一生的记录可能就这样几条记录,避 ...

  4. Git原始笔记

    .dir .mkdir lxit .cd lxit .git init(git仓库不要动!!! 除非用命令动它里面的文件,新添加的可以动) .ls .pwd Config: git config -- ...

  5. 新手IOS tweak越狱app开发记录

    需要改变原先程序功能流程的话,是要用到Logos Tweak 开发.另外,.在苹果商城下载到的app,不能直接拿来分析.需要先做一定的前期准备.网上有很多相关的写第一个越狱插件的文章,这里就不在赘言了 ...

  6. Vue实例初始化的选项配置对象详解

    Vue实例初始化的选项配置对象详解 1. Vue实例的的data对象 介绍 Vue的实例的数据对象data 我们已经用了很多了,数据绑定离不开data里面的数据.也是Vue的核心属性. 它是Vue绑定 ...

  7. 为什么要用 SpringMVC 的 SessionStatus

    我们可以在需要访问 Session 属性的 controller 上加上 @SessionAttributes,然后在 action 需要的 User 参数上加上 @ModelAttribute,并保 ...

  8. HTML-HTML5+CSS3权威指南阅读(三、CSS3)

    不同的浏览器(包括-moz-代表的Mozilla Firefox, -ms-代表的Microsoft Internet Explorer等)厂商在发布正式版本之前之前, 试验各自对CSS3新特性的实现 ...

  9. xcode9.2 objective-c install (mac 10.12.6)

    1. xcode下载: https://download.developer.apple.com/Developer_Tools/Xcode_9.2/Xcode_9.2.xip 2. 点击默认安装即可 ...

  10. sql server xtype 对应数据类型名称sql查询

    SELECT c.name,c.user_type_id,t.name FROM sys.[columns] AS c INNER JOIN sys.types AS t ON t.user_type ...