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 相关文章推荐
Zend公司全球首推PHP认证
Oct 09 PHP
php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
Sep 05 PHP
php 文件缓存函数
Oct 08 PHP
关于查看MSSQL 数据库 用户每个表 占用的空间大小
Jun 21 PHP
php将图片保存为不同尺寸图片的图片类实例
Mar 30 PHP
学习php设计模式 php实现访问者模式(Visitor)
Dec 07 PHP
实例详解PHP中html word 互转的方法
Jan 28 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
Nov 22 PHP
微信公众号实现会员卡领取功能
Jun 08 PHP
php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析
Jun 25 PHP
PHP生成随机字符串实例代码(字母+数字)
Sep 11 PHP
php数组和链表的区别总结
Sep 20 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
Zerg建筑一览
2020/03/14 星际争霸
JS异常处理的一个想法(sofish)
2013/03/14 Javascript
使用jQuery动态加载js脚本文件的方法
2014/04/03 Javascript
jQuery实现菜单式图片滑动切换
2015/03/14 Javascript
jquery实现红色竖向多级向右展开的导航菜单效果
2015/08/31 Javascript
jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)
2016/06/07 Javascript
jQuery原理系列-css选择器的简单实现
2016/06/07 Javascript
在Vue组件中使用 TypeScript的方法
2018/02/28 Javascript
微信小程序之事件交互操作实例分析
2018/12/03 Javascript
解决layui的table插件无法多层级获取json数据的问题
2019/09/19 Javascript
vue在路由中验证token是否存在的简单实现
2019/11/11 Javascript
github配置使用指南
2014/11/18 Python
Python for Informatics 第11章 正则表达式(一)
2016/04/21 Python
多个应用共存的Django配置方法
2018/05/30 Python
Python二叉树的镜像转换实现方法示例
2019/03/06 Python
Opencv-Python图像透视变换cv2.warpPerspective的示例
2019/04/11 Python
python单例模式原理与创建方法实例分析
2019/10/26 Python
Tensorflow tf.dynamic_partition矩阵拆分示例(Python3)
2020/02/07 Python
python读取与处理netcdf数据方式
2020/02/14 Python
python使用pyecharts库画地图数据可视化的实现
2020/03/25 Python
Python实现SMTP邮件发送
2020/06/16 Python
Python自动化操作实现图例绘制
2020/07/09 Python
python操作toml文件的示例代码
2020/11/27 Python
Mankind西班牙男士护肤品网站:购买皮肤护理、护发和剃须
2017/04/27 全球购物
印尼购物网站:iLOTTE
2019/10/16 全球购物
大学生职业生涯规划书范文
2014/01/14 职场文书
捐资助学倡议书
2014/04/15 职场文书
项目合作协议书范本
2014/04/16 职场文书
另类冲刺标语
2014/06/24 职场文书
公司2014年度工作总结
2014/12/10 职场文书
前台接待岗位职责
2015/02/03 职场文书
2015年财务工作总结范文
2015/03/31 职场文书
导游词之蜀山胜景瓦屋山
2019/11/29 职场文书
Python+Appium实现自动抢微信红包
2021/05/21 Python
mysql定时自动备份数据库的方法步骤
2021/07/07 MySQL
JavaWeb 入门:Hello Servlet
2021/07/16 Java/Android