php微信公众号开发之二级菜单


Posted in PHP onOctober 20, 2018

本文实例为大家分享了php微信公众号二级菜单的具体代码,供大家参考,具体内容如下

php微信公众号开发之二级菜单

核心代码:

$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
 $fromUsername = $postObj->FromUserName;
 $toUsername = $postObj->ToUserName;
 $MsgType=$postObj->MsgType;
 $keyword = trim($postObj->Content);
 $time = time();
 $textTpl = "<xml>
    <ToUserName><![CDATA[%s]]></ToUserName>
     <FromUserName><![CDATA[%s]]></FromUserName>
     <CreateTime>%s</CreateTime>
      <MsgType><![CDATA[text]]></MsgType>
      <Content>%s</Content>
     <FuncFlag>0</FuncFlag>
    </xml>";    

   //用 户 名 : $user
   //密码 : $pwd
   //主库域名 : $host
   //从库域名 : SAE_MYSQL_HOST_S
   //端口 : $port
   //数据库名 : $dbname

     $dbname = "app_dq095";
     $host = "w.rdc.sae.sina.com.cn";
     $port = "3306";
     $user = "4k514n103z";
     $pwd = "2402314li2j1i5im1xy2xizj5y332w2x41k2z203";

     /*接着调用mysql_connect()连接服务器*/
     // 连主库
     $db = mysql_connect($host,$user,$pwd);

     if(!$db){
      die("Connect Server Failed: " . mysql_error($db));
     }

     /*连接成功后立即调用mysql_select_db()选中需要连接的数据库*/
     if (!mysql_select_db($dbname)) {
      die("Select Database Failed: " . mysql_error($db));
     }

      mysql_query("set names utf-8",$db); 
     /*至此连接已完全建立,就可对当前数据库进行相应的操作了*/
     /*!!!注意,无法再通过本次连接调用mysql_select_db来切换到其它数据库了!!!*/
     /* 需要再连接其它数据库,请再使用mysql_connect+mysql_select_db启动另一个连接*/

     /**
      * 接下来就可以使用其它标准php mysql函数操作进行数据库操作
      */

    if($keyword=="天气")
    {
     $content="请输入地区";
     $sql="INSERT INTO `weather`(`id`,`user`,`keyword`) VALUES (NULL,'{$fromUsername}','{$keyword}')";
     mysql_query($sql); 
    }
    else
    {
     $sql="SELECT `keyword` FROM `weather` WHERE `user`= '" . $fromUsername . "'";
     $query=mysql_query($sql);
     $rs=mysql_fetch_array($query);
     $c= $rs['keyword'];
     echo $c;
     if($c=="天气")
     {
      $url="http://api.map.baidu.com/telematics/v2/weather?location={$keyword}&ak=1a3cde429f38434f1811a75e1a90310c";

       $fa=file_get_contents($url);
       $f=simplexml_load_string($fa);
       $city=$f->currentCity;
       $da1=$f->results->result[0]->date;
       $da2=$f->results->result[1]->date;
       $da3=$f->results->result[2]->date;  
       $w1=$f->results->result[0]->weather;
       $w2=$f->results->result[1]->weather;
       $w3=$f->results->result[2]->weather;  
       $p1=$f->results->result[0]->wind;
       $p2=$f->results->result[1]->wind;
       $p3=$f->results->result[2]->wind;
       $q1=$f->results->result[0]->temperature;
       $q2=$f->results->result[1]->temperature;
       $q3=$f->results->result[2]->temperature; 
       $d1=$city.$da1.$w1.$p1.$q1;
       $d2=$city.$da2.$w2.$p2.$q2;
       $d3=$city.$da3.$w3.$p3.$q3;
       $content=$d1.$d2.$d3;
       if (empty($content))
       {
        $content="你输入的地区有误";}
       }
   else{
  $content="请先输入天气";
   } 
 }        
 $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time,$content);
echo $resultStr;

index.php 整体代码如下:

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

//define your token
define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();
$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;
    $MsgType=$postObj->MsgType;
    $keyword = trim($postObj->Content);
    $time = time();
    $textTpl = "<xml>
       <ToUserName><![CDATA[%s]]></ToUserName>
       <FromUserName><![CDATA[%s]]></FromUserName>
       <CreateTime>%s</CreateTime>
        <MsgType><![CDATA[text]]></MsgType>
        <Content>%s</Content>
        <FuncFlag>0</FuncFlag>
       </xml>";    

     //用 户 名 : $user
     //密码 : $pwd
     //主库域名 : $host
     //从库域名 : SAE_MYSQL_HOST_S
     //端口 : $port
     //数据库名 : $dbname

     $dbname = "app_dq095";
     $host = "w.rdc.sae.sina.com.cn";
     $port = "3306";
     $user = "4k514n103z";
     $pwd = "2402314li2j1i5im1xy2xizj5y332w2x41k2z203";

     /*接着调用mysql_connect()连接服务器*/
     // 连主库
     $db = mysql_connect($host,$user,$pwd);

     if(!$db){
      die("Connect Server Failed: " . mysql_error($db));
     }

     /*连接成功后立即调用mysql_select_db()选中需要连接的数据库*/
     if (!mysql_select_db($dbname)) {
      die("Select Database Failed: " . mysql_error($db));
     }

      mysql_query("set names utf-8",$db); 
     /*至此连接已完全建立,就可对当前数据库进行相应的操作了*/
     /*!!!注意,无法再通过本次连接调用mysql_select_db来切换到其它数据库了!!!*/
     /* 需要再连接其它数据库,请再使用mysql_connect+mysql_select_db启动另一个连接*/

     /**
      * 接下来就可以使用其它标准php mysql函数操作进行数据库操作
      */

    if($keyword=="天气")
    {
     $content="请输入地区";
     $sql="INSERT INTO `weather`(`id`,`user`,`keyword`) VALUES (NULL,'{$fromUsername}','{$keyword}')";
     mysql_query($sql); 
    }
    else
    {
     $sql="SELECT `keyword` FROM `weather` WHERE `user`= '" . $fromUsername . "'";
     $query=mysql_query($sql);
     $rs=mysql_fetch_array($query);
     $c= $rs['keyword'];
     echo $c;
     if($c=="天气")
     {
      $url="http://api.map.baidu.com/telematics/v2/weather?location={$keyword}&ak=1a3cde429f38434f1811a75e1a90310c";

       $fa=file_get_contents($url);
       $f=simplexml_load_string($fa);
       $city=$f->currentCity;
       $da1=$f->results->result[0]->date;
       $da2=$f->results->result[1]->date;
       $da3=$f->results->result[2]->date;  
       $w1=$f->results->result[0]->weather;
       $w2=$f->results->result[1]->weather;
       $w3=$f->results->result[2]->weather;  
       $p1=$f->results->result[0]->wind;
       $p2=$f->results->result[1]->wind;
       $p3=$f->results->result[2]->wind;
       $q1=$f->results->result[0]->temperature;
       $q2=$f->results->result[1]->temperature;
       $q3=$f->results->result[2]->temperature; 
       $d1=$city.$da1.$w1.$p1.$q1;
       $d2=$city.$da2.$w2.$p2.$q2;
       $d3=$city.$da3.$w3.$p3.$q3;
       $content=$d1.$d2.$d3;
       if (empty($content))
       {
        $content="你输入的地区有误";}
       }
     else{
      $content="请先输入天气";
     } 
    }        
    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time,$content);
    echo $resultStr;

  }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 相关文章推荐
php下intval()和(int)转换使用与区别
Jul 18 PHP
PHP MSSQL 存储过程的方法
Dec 24 PHP
php过滤XSS攻击的函数
Nov 12 PHP
PHP中替换键名的简易方法示例详解
Jan 07 PHP
thinkphp实现like模糊查询实例
Oct 29 PHP
PHP实现图片自动清理的方法
Jul 08 PHP
PHP常用技巧汇总
Mar 04 PHP
DEDE实现转跳属性文档在模板上调用出转跳地址
Nov 04 PHP
Laravel框架基于ajax和layer.js实现无刷新删除功能示例
Jan 17 PHP
因str_replace导致的注入问题总结
Aug 08 PHP
使用laravel指定日志文件记录任意日志
Oct 17 PHP
laravel Task Scheduling(任务调度)在windows下的使用详解
Oct 22 PHP
php微信公众号开发之音乐信息
Oct 20 #PHP
php微信公众号开发之欢迎老朋友
Oct 20 #PHP
php微信公众号开发之秒杀
Oct 20 #PHP
php微信公众号开发之关键词回复
Oct 20 #PHP
php微信公众号开发之图片回复
Oct 20 #PHP
php5.x禁用eval的操作方法
Oct 19 #PHP
django中的ajax组件教程详解
Oct 18 #PHP
You might like
在PHP中读取和写入WORD文档的代码
2008/04/09 PHP
PHP的单引号和双引号 字符串效率
2009/05/27 PHP
PHP 万年历实现代码
2012/10/18 PHP
PHP FTP操作类代码( 上传、拷贝、移动、删除文件/创建目录)
2014/05/10 PHP
laravel5表单唯一验证的实例代码
2019/09/30 PHP
基于php解决json_encode中文UNICODE转码问题
2020/11/10 PHP
Js从头学起(基本数据类型和引用类型的参数传递详细分析)
2012/02/16 Javascript
JavaScript图片放大技术(放大镜)实现代码分享
2013/11/14 Javascript
无限树Jquery插件zTree的常用功能特性总结
2014/09/11 Javascript
Js实现无刷新删除内容
2015/04/29 Javascript
JavaScript File API实现文件上传预览
2016/02/02 Javascript
通过javascript进行UTF-8编码的实现方法
2016/06/27 Javascript
jsp 网站引入外部css或者js失效问题解决
2016/10/31 Javascript
setTimeout函数的神奇使用
2017/02/26 Javascript
AngularJS中ng-class用法实例分析
2017/07/06 Javascript
JavaScript面向对象程序设计中对象的定义和继承详解
2019/07/29 Javascript
layui表单验证select下拉框实现验证的方法
2019/09/05 Javascript
vue实现表单录入小案例
2019/09/27 Javascript
vue 二维码长按保存和复制内容操作
2020/09/22 Javascript
python下paramiko模块实现ssh连接登录Linux服务器
2015/06/03 Python
Python编程给numpy矩阵添加一列方法示例
2017/12/04 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
2018/07/06 Python
深入flask之异步非堵塞实现代码示例
2018/07/31 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
2019/07/11 Python
Pytorch 实现focal_loss 多类别和二分类示例
2020/01/14 Python
Python基于pandas爬取网页表格数据
2020/05/11 Python
使用phonegap查找联系人的实现方法
2017/03/31 HTML / CSS
美国蔬菜和植物种子公司:Burpee
2017/02/01 全球购物
绘儿乐产品官方在线商店:Crayola.com
2019/09/07 全球购物
《将心比心》教学反思
2014/04/08 职场文书
《飞向蓝天的恐龙》教学反思
2014/04/09 职场文书
业务内勤岗位职责
2014/04/30 职场文书
大学生实习证明范本
2014/09/19 职场文书
聚会通知怎么写
2015/04/23 职场文书
Python打包为exe详细教程
2021/05/18 Python
Django drf请求模块源码解析
2021/06/08 Python