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 相关文章推荐
PHPwind整合最土系统用户同步登录实现方法
Dec 08 PHP
fleaphp crud操作之findByField函数的使用方法
Apr 23 PHP
PHP 小心urldecode引发的SQL注入漏洞
Oct 27 PHP
PHP设计模式 注册表模式
Feb 05 PHP
浅析Mysql 数据回滚错误的解决方法
Aug 05 PHP
php实现水仙花数示例分享
Apr 03 PHP
PHP学习笔记(二) 了解PHP的基本语法以及目录结构
Aug 04 PHP
PHP+iframe图片上传实现即时刷新效果
Nov 18 PHP
详谈php ip2long 出现负数的原因及解决方法
Apr 05 PHP
PHP读取CSV大文件导入数据库的实例
Jul 24 PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
May 24 PHP
laravel获取不到session的三种解决办法【推荐】
Sep 16 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
东方红 - 来复式再生机的修复
2021/03/02 无线电
生成静态页面的php函数,php爱好者站推荐
2007/03/19 PHP
php实现简易聊天室应用代码
2015/09/23 PHP
教你php如何实现验证码
2016/01/20 PHP
一个简单安全的PHP验证码类、PHP验证码
2016/09/24 PHP
NodeJS制作爬虫全过程(续)
2014/12/22 NodeJs
JavaScript检查子字符串是否在字符串中的方法
2016/02/03 Javascript
完美实现八种js焦点轮播图(下篇)
2020/04/20 Javascript
利用vue+elementUI实现部分引入组件的方法详解
2017/11/22 Javascript
浅谈vue项目如何打包扔向服务器
2018/05/08 Javascript
AngularJs的UI组件ui-Bootstrap之Tooltip和Popover
2018/07/13 Javascript
微信小程序开发问题之wx.previewImage
2018/12/25 Javascript
Vue实现push数组并删除的例子
2019/11/01 Javascript
JS中FormData类实现文件上传
2020/03/27 Javascript
vue-列表下详情的展开与折叠案例
2020/07/28 Javascript
原生js实现贪吃蛇游戏
2020/10/26 Javascript
在Python中操作列表之list.extend()方法的使用
2015/05/20 Python
对Python 数组的切片操作详解
2018/07/02 Python
tensorflow实现对张量数据的切片操作方式
2020/01/19 Python
Python使用configparser库读取配置文件
2020/02/22 Python
python删除某个目录文件夹的方法
2020/05/26 Python
英国文胸专家:AmpleBosom.com
2018/02/06 全球购物
龟牌英国商店:Turtle Wax Brand Store UK
2019/07/02 全球购物
您附近的水疗和健康场所:Spafinder(美国)
2019/07/05 全球购物
简述DNS进行域名解析的过程
2013/12/02 面试题
大学生的网络创业计划书
2013/12/26 职场文书
承诺书的格式范文
2014/03/28 职场文书
学校安全责任书
2014/04/14 职场文书
大学团日活动新闻稿
2014/09/10 职场文书
毕业生自荐材料范文
2014/12/30 职场文书
放牛班的春天观后感
2015/06/01 职场文书
小学语文继续教育研修日志
2015/11/13 职场文书
Flask response响应的具体使用
2021/07/15 Python
Python卷积神经网络图片分类框架详解分析
2021/11/07 Python
Java死锁的排查
2022/05/11 Java/Android
Python docx库删除复制paragraph及行高设置图片插入示例
2022/07/23 Python