php微信开发之关注事件


Posted in PHP onJune 14, 2018

本文实例为大家分享了php微信关注事件的具体代码,供大家参考,具体内容如下

<?php
/**
 * wechat php test
 */

//define your token
define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();
//$wechatObj->valid();
$wechatObj->responseMsg();
class wechatCallbackapiTest
{
 public function valid()
 {
  $echoStr = $_GET["echostr"];

  //valid signature , option
  if($this->checkSignature()){
   echo $echoStr;
   exit;
  }
 }

 public function responseMsg()
 {
  //get post data, May be due to the different environments
  $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

  //extract post data
  if (!empty($postStr)){

    $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
    $fromUsername = $postObj->FromUserName;
    $toUsername = $postObj->ToUserName;
    $type = $postObj->MsgType;
    $customevent = $postObj->Event;
    $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>";    
    if($type=="event" and $customrevent=="subscribe"){
     $contentStr = "感谢你的关注\n回复1查看联系方式\n回复2查看最新资讯\n回复3查看法律文书";
     $msgType = "text";
     $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
     echo $resultStr;
     } 
    if(!empty( $keyword ))
    {        
     $msgType = "text";
     if($keyword=="1"){
     $contentStr = "qiphon";}
     if($keyword=="2"){
     $contentStr = "test 。";}
     if($keyword=="3"){
     $contentStr = "test333";}     
     $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
     echo $resultStr;
    }else{
     echo "Input something...";
    }

  }else {
   echo "";
   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;
  }
 }
}

?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
discuz安全提问算法
Jun 06 PHP
php学习笔记 数组的常用函数
Jun 13 PHP
php 字符串替换的方法
Jan 10 PHP
ThinkPHP学习笔记(一)ThinkPHP部署
Jun 22 PHP
初识Laravel
Oct 30 PHP
php实现搜索一维数组元素并删除二维数组对应元素的方法
Jul 06 PHP
怎样搭建PHP开发环境
Jul 28 PHP
PHP中ltrim与rtrim去除左右空格及特殊字符实例
Jan 07 PHP
Yii2实现UploadedFile上传文件示例
Feb 15 PHP
PHP实现的多维数组排序算法分析
Feb 10 PHP
php session_decode函数用法讲解
May 26 PHP
如何解决php-fpm启动不了问题
Nov 17 PHP
thinkPHP框架动态配置用法实例分析
Jun 14 #PHP
php微信开发之谷歌测距
Jun 14 #PHP
php微信开发之图片回复功能
Jun 14 #PHP
php微信开发之音乐回复功能
Jun 14 #PHP
php微信开发之关键词回复功能
Jun 13 #PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
Jun 13 #PHP
微信公众号开发之获取位置信息php代码
Jun 13 #PHP
You might like
自己动手做一个SQL解释器
2006/10/09 PHP
php数组函数序列之array_combine() - 数组合并函数使用说明
2011/10/29 PHP
解析zend studio中直接导入svn中的项目的方法步骤
2013/06/21 PHP
php处理restful请求的路由类分享
2014/02/27 PHP
Thinkphp调用Image类生成缩略图的方法
2015/03/07 PHP
Laravel 框架控制器 Controller原理与用法实例分析
2020/04/14 PHP
Javascript操作select方法大全[新增、修改、删除、选中、清空、判断存在等]
2008/09/26 Javascript
js 函数的执行环境和作用域链的深入解析
2009/11/01 Javascript
纯js写的分页表格数据为json串
2014/02/18 Javascript
浅谈JavaScript中的string拥有方法的原因
2015/08/28 Javascript
AngularJS基础 ng-mousemove 指令简单示例
2016/08/02 Javascript
实例分析浏览器中“JavaScript解析器”的工作原理
2016/12/12 Javascript
原生JS实现层叠轮播图
2017/05/17 Javascript
基于node.js之调试器详解
2017/08/22 Javascript
IE11下使用canvas.toDataURL报SecurityError错误的解决方法
2017/11/19 Javascript
JavaScript 有用的代码片段和 trick
2018/02/22 Javascript
详解vue添加删除元素的方法
2018/06/30 Javascript
解决vant-UI库修改样式无效的问题
2020/11/03 Javascript
Python将多份excel表格整理成一份表格
2018/01/03 Python
python Pandas 读取txt表格的实例
2018/04/29 Python
使用Python 统计高频字数的方法
2019/01/31 Python
Python列表对象实现原理详解
2019/07/01 Python
Python 如何提高元组的可读性
2019/08/26 Python
python自动识别文本编码格式代码
2019/12/26 Python
用什么库写 Python 命令行程序(示例代码详解)
2020/02/20 Python
Python双链表原理与实现方法详解
2020/02/22 Python
Pycharm修改python路径过程图解
2020/05/22 Python
python interpolate插值实例
2020/07/06 Python
关于HTML5+ API plusready的兼容问题
2020/11/20 HTML / CSS
巴西图书和电子产品购物网站:Saraiva
2017/06/07 全球购物
What's the difference between Debug and Trace class? (Debug类与Trace类有什么区别)
2013/09/10 面试题
2014中学教师节广播稿
2014/09/10 职场文书
简易离婚协议书(范本)
2014/10/25 职场文书
监理中标通知书
2015/04/16 职场文书
关于国庆节的广播稿
2015/08/19 职场文书
Python使用openpyxl批量处理数据
2021/06/23 Python