php微信公众号开发之欢迎老朋友


Posted in PHP onOctober 20, 2018

本文实例为大家分享了php微信公众号开发之欢迎老朋友的具体代码,供大家参考,具体内容如下

介绍数据库

  • insert
  • iconv 进行数据库转码函数
  • fromusername 

 php微信公众号开发之欢迎老朋友

关键代码如下:

$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$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(!empty( $keyword ))
     {
       //用 户 名 : $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函数操作进行数据库操作
       */

       $sql="SELECT * FROM `welcome`WHERE `user`= '" . iconv("UTF-8","GBK",$fromUsername) . "'";
       $query=mysql_query($sql);
       $rs=mysql_fetch_array($query);
       $b= $rs['user'];
       $c=iconv("GBK","UTF-8",$b);
       $msgType = "text";
       if ($c==$fromUsername)
       {
         $contentStr = "欢迎老朋友!";
       }else{
        $sql="INSERT INTO `welcome`(`id`,`user`) VALUES (NULL,'{$fromUsername}')";
  mysql_query($sql);
$contentStr = "欢迎新朋友!";
       }

       $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);         
       echo $resultStr;
       mysql_close($db);
     }else{
         echo "Input something...";
 }

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;
        $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(!empty( $keyword ))
        {
          //用 户 名 : $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函数操作进行数据库操作
           */

           $sql="SELECT * FROM `welcome`WHERE `user`= '" . iconv("UTF-8","GBK",$fromUsername) . "'";
           $query=mysql_query($sql);
           $rs=mysql_fetch_array($query);
           $b= $rs['user'];
           $c=iconv("GBK","UTF-8",$b);
           $msgType = "text";
           if ($c==$fromUsername)
           {
             $contentStr = "欢迎老朋友!";
           }else{
            $sql="INSERT INTO `welcome`(`id`,`user`) VALUES (NULL,'{$fromUsername}')";
            mysql_query($sql);
            $contentStr = "欢迎新朋友!";
           }

           $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);         
           echo $resultStr;
           mysql_close($db);
         }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 相关文章推荐
Zend引擎的发展 [15]
Oct 09 PHP
php入门学习知识点三 PHP上传
Jul 14 PHP
ThinkPHP 连接Oracle数据库的详细教程[全]
Jul 16 PHP
PHP json格式和js json格式 js跨域调用实现代码
Sep 08 PHP
php从数组中随机抽取一些元素的代码
Nov 05 PHP
用PHP实现弹出消息提示框的两种方法
Dec 17 PHP
PDO防注入原理分析以及使用PDO的注意事项总结
Oct 23 PHP
php版微信开发Token验证失败或请求URL超时问题的解决方法
Sep 23 PHP
PHP基于自定义函数实现的汉字转拼音功能实例
Sep 30 PHP
PHP设计模式之模板模式定义与用法详解
Dec 20 PHP
php ajax confirm 删除实例详解
Mar 06 PHP
laravel实现前后台路由分离的方法
Oct 13 PHP
php微信公众号开发之秒杀
Oct 20 #PHP
php微信公众号开发之关键词回复
Oct 20 #PHP
php微信公众号开发之图片回复
Oct 20 #PHP
php5.x禁用eval的操作方法
Oct 19 #PHP
django中的ajax组件教程详解
Oct 18 #PHP
Laravel关联模型中过滤结果为空的结果集(has和with区别)
Oct 18 #PHP
PHP使用glob方法遍历文件夹下所有文件的实例
Oct 17 #PHP
You might like
短波的认识
2021/03/01 无线电
一个典型的PHP分页实例代码分享
2011/07/28 PHP
PHP微信开发之根据用户回复关键词\位置返回附近信息
2016/06/24 PHP
php接口隔离原则实例分析
2019/11/11 PHP
js 表单验证方法(实用)
2009/04/28 Javascript
jQuery获取文本节点之 text()/val()/html() 方法区别
2011/03/01 Javascript
JS 添加网页桌面快捷方式的代码详细整理
2012/12/27 Javascript
一个简单的JS鼠标悬停特效具体方法
2013/06/17 Javascript
如何获取网站icon有哪些可行的方法
2014/06/05 Javascript
Extjs grid panel自带滚动条失效的解决方法
2014/09/11 Javascript
javascript 构造函数方式定义对象
2015/01/02 Javascript
js如何判断访问是来自搜索引擎(蜘蛛人)还是直接访问
2015/09/14 Javascript
JavaScript字符串对象
2017/01/14 Javascript
JavaScript通过filereader接口读取文件
2017/05/10 Javascript
nodejs读取本地中文json文件出现乱码解决方法
2018/10/10 NodeJs
在Node.js下运用MQTT协议实现即时通讯及离线推送的方法
2019/01/24 Javascript
深入浅出vue图片路径的实现
2019/09/04 Javascript
Bootstrap实现模态框效果
2019/09/30 Javascript
Node.js API详解之 os模块用法实例分析
2020/05/06 Javascript
[05:59]带你看看DPC的台前幕后
2021/03/11 DOTA
python发送邮件的实例代码(支持html、图片、附件)
2013/03/04 Python
在Python中用get()方法获取字典键值的教程
2015/05/21 Python
python 递归遍历文件夹,并打印满足条件的文件路径实例
2017/08/30 Python
详解python3中tkinter知识点
2018/06/21 Python
使用Python生成200个激活码的实现方法
2019/11/22 Python
深度学习入门之Pytorch 数据增强的实现
2020/02/26 Python
Python IDE环境之 新版Pycharm安装详细教程
2020/03/05 Python
Python线程协作threading.Condition实现过程解析
2020/03/12 Python
详解python中GPU版本的opencv常用方法介绍
2020/07/24 Python
alice McCALL官网:澳大利亚时尚品牌
2020/11/16 全球购物
Shell如何接收变量输入
2016/08/06 面试题
电大毕业个人生自我鉴定
2014/03/26 职场文书
2014小学语文教学工作总结
2014/12/17 职场文书
2015年八一建军节慰问信
2015/03/23 职场文书
2015年保险公司工作总结
2015/04/24 职场文书
忠犬八公的故事观后感
2015/06/05 职场文书