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 相关文章推荐
php缓存技术介绍
Nov 25 PHP
php相当简单的分页类
Oct 02 PHP
PHP 实用代码收集
Jan 22 PHP
PHP stristr() 函数(不区分大小写的字符串查找)
Jun 03 PHP
PHP基础教程(php入门基础教程)一些code代码
Jan 06 PHP
关于查看MSSQL 数据库 用户每个表 占用的空间大小
Jun 21 PHP
神盾加密解密教程(三)PHP 神盾解密工具
Jun 08 PHP
php集成环境xampp中apache无法启动问题解决方案
Nov 18 PHP
一个比较不错的PHP日历类分享
Nov 18 PHP
PHP获取数组最后一个值的2种方法
Jan 21 PHP
php+js实现百度地图多点标注的方法
Nov 30 PHP
thinkPHP简单调用函数与类库的方法
Mar 15 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
php计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
2017/05/23 PHP
[原创]PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】
2019/07/12 PHP
NiftyCube——轻松实现圆角边框
2007/02/20 Javascript
最简单的js图片切换效果实现代码
2011/09/24 Javascript
关于JS字符串函数String.replace()
2013/04/07 Javascript
jQuery的live()方法对hover事件的处理示例
2014/02/27 Javascript
jQuery学习笔记之 Ajax操作篇(二) - 数据传递
2014/06/23 Javascript
JS获取当前网页大小以及屏幕分辨率等
2014/09/05 Javascript
JavaScript优化专题之Loading and Execution加载和运行
2016/01/20 Javascript
js 获取当前web应用的上下文路径实现方法
2016/08/19 Javascript
AngularJS实现进度条功能示例
2017/07/05 Javascript
Vue中的ref作用详解(实现DOM的联动操作)
2017/08/21 Javascript
在 vue-cli v3.0 中使用 SCSS/SASS的方法
2018/06/14 Javascript
详解vue如何使用rules对表单字段进行校验
2018/10/17 Javascript
vue fetch中的.then()的正确使用方法
2020/04/17 Javascript
js实现点击上传图片并设为模糊背景
2020/08/02 Javascript
Python中字符串的格式化方法小结
2016/05/03 Python
Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例
2017/09/26 Python
Django处理多用户类型的方法介绍
2019/05/18 Python
Python 通过截图匹配原图中的位置(opencv)实例
2019/08/27 Python
工程力学专业毕业生求职信
2013/10/06 职场文书
个人简历中的自我评价范例
2013/10/29 职场文书
大学生村官工作感言
2014/01/10 职场文书
校运会入场式解说词
2014/02/10 职场文书
致铅球运动员加油稿
2014/02/13 职场文书
社团2014年植树节活动总结
2014/03/11 职场文书
小学红领巾广播稿(3篇)
2014/09/13 职场文书
2014广电局实施党的群众路线教育实践活动方案思想汇报
2014/09/22 职场文书
电子银行业务授权委托书
2014/10/10 职场文书
2014党的群众路线教育实践活动总结材料
2014/10/31 职场文书
小学生节水倡议书
2015/04/29 职场文书
法律服务所工作总结
2015/08/10 职场文书
2016年庆“七一”主题党日活动总结
2016/04/05 职场文书
AngularJS实现多级下拉框
2022/03/25 Javascript
Mysql 一主多从的部署
2022/05/20 MySQL