php微信公众号开发之答题连闯三关


Posted in PHP onOctober 20, 2018

本文实例为大家分享了php微信公众号开发之答题闯关的具体代码,供大家参考,具体内容如下

连闯三关

  • implode( "," ,array) 数组变字符串 数组无法保存到数据库中去
  • explode(",",str) 字符串变数组
  • array_rand($arr,n ) 随机取出数组中 n 个单项

php微信公众号开发之答题连闯三关

php微信公众号开发之答题连闯三关php微信公众号开发之答题连闯三关

核心代码如下:

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;
    $type = $postObj->MsgType;
    $customevent = $postObj->Event;
    $latitude = $postObj->Location_X;
    $longitude = $postObj->Location_Y;
    $keyword = trim($postObj->Content);
    $time = time();
    $textTpl = "<xml>
        <ToUserName><![CDATA[%s]]></ToUserName>
        <FromUserName><![CDATA[%s]]></FromUserName>
        <CreateTime>%s</CreateTime>
        <MsgType><![CDATA[%s]]></MsgType>
        <Content>%s</Content>
        <FuncFlag>0</FuncFlag>
       </xml>"; 
    include("coon.php");   
    $array=array("河北"=>"石家庄","山西"=>"太原","广东"=>"广州","黑龙江"=>"哈尔滨","广西"=>"南宁","浙江"=>"杭州","江苏"=>"南京","山东"=>"济南","河南"=>"郑州");
    if($keyword=="8")
    {
     $a=array_rand($array,3);
     $contentStr="第一题".$a[0]."省会是哪里?";
     $a=implode(",",$a); 
     $sql="SELECT * FROM `menu2` where `user`= '{$fromUsername}'";
     $query=mysql_query($sql);
     $rm=mysql_fetch_array($query); 
     $user=$rm['user'];
     if (empty($user))
     {
      $sql="INSERT INTO `menu2` (`id` ,`user` ,`sec`,`answer`,`num`)VALUES (NULL , '{$fromUsername}', '8','{$a}','0')";
      mysql_query($sql);
     } 
     else
     {
      $sql="UPDATE `menu2` SET `sec`='8',`answer`='{$a}', `num`='0' where `user`= '{$fromUsername}'";
      mysql_query($sql);
     }
    }
    else
    {
     $sql="SELECT * FROM `menu2` where `user`= '{$fromUsername}'";
     $query=mysql_query($sql);
     $rm=mysql_fetch_array($query);
     $sec=$rm['sec'];
     $answer=$rm['answer'];
     $answer=explode(",",$answer);

     $num=$rm['num'];  
     if($sec=="8")
     {

      if($num=="0")
      {

       if($keyword==$array[$answer[0]])
       {
        $contentStr="恭喜你,答对了。\n第二题".$answer[1]."省会是哪里?";
        $sql="UPDATE `menu2` SET `num`='1' where `user`= '{$fromUsername}'";
        mysql_query($sql);
       }
       else
       {
        $contentStr="很遗憾,你错了,重新来玩吧。";
        $sql="UPDATE `menu2` SET `sec`='' where `user`= '{$fromUsername}'";
        mysql_query($sql);
       }
      } 
      elseif($num=="1")
      {
       if($keyword==$array[$answer[1]])
       {
        $contentStr="恭喜你,答对了。\n第三题".$answer[2]."省会是哪里?";
        $sql="UPDATE `menu2` SET `num`='2' where `user`= '{$fromUsername}'";
        mysql_query($sql);
       }
       else
       {
        $contentStr="很遗憾,再努力一把,重新来玩吧。";
        $sql="UPDATE `menu2` SET `sec`='' where `user`= '{$fromUsername}'";
        mysql_query($sql);
       }
      }
      elseif($num=="2")
      {
       if($keyword==$array[$answer[2]]){
       $contentStr="恭喜你,连闯三关!";
       $sql="UPDATE `menu2` SET `sec`='' where `user`= '{$fromUsername}'";
       mysql_query($sql);
      }
      else
      {
       $contentStr="很遗憾,就差一步,重新来玩吧。";
       $sql="UPDATE `menu2` SET `sec`='' where `user`= '{$fromUsername}'";
       mysql_query($sql);
      }
     }
    } 
    else 
    {
     $contentStr="请先输入8";
    }
   }
   $msgType="text";
   $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
   echo $resultStr;

  }
 }

menu2.sql 数据库代码如下:

-- phpMyAdmin SQL Dump
-- version 3.3.8.1
-- http://www.phpmyadmin.net
--
-- 主机: w.rdc.sae.sina.com.cn:3307
-- 生成日期: 2018 年 08 月 26 日 14:10
-- 服务器版本: 5.6.23
-- PHP 版本: 5.3.3

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- 数据库: `app_dq095`
--

-- --------------------------------------------------------

--
-- 表的结构 `menu2`
--

CREATE TABLE IF NOT EXISTS `menu2` (
 `id` int(3) NOT NULL AUTO_INCREMENT,
 `user` varchar(255) NOT NULL,
 `sec` int(1) NOT NULL,
 `answer` varchar(10) NOT NULL,
 `num` int(4) NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

--
-- 转存表中的数据 `menu2`
--

INSERT INTO `menu2` (`id`, `user`, `sec`, `answer`, `num`) VALUES
(1, 'ooD-ow-C8ZigAihscJN54pAWpu2g', 8, '广东,江苏,山东', 1),
(2, 'ooD-ow-C8ZigAihscJN54pAWpu2g', 8, '广东,江苏,山东', 1);

coon.php 连接数据库代码如下:

<?php


  //用 户 名 : $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函数操作进行数据库操作
  */

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;
    $type = $postObj->MsgType;
    $customevent = $postObj->Event;
    $latitude = $postObj->Location_X;
    $longitude = $postObj->Location_Y;
    $keyword = trim($postObj->Content);
    $time = time();
    $textTpl = "<xml>
        <ToUserName><![CDATA[%s]]></ToUserName>
        <FromUserName><![CDATA[%s]]></FromUserName>
        <CreateTime>%s</CreateTime>
        <MsgType><![CDATA[%s]]></MsgType>
        <Content>%s</Content>
        <FuncFlag>0</FuncFlag>
       </xml>"; 
    include("coon.php");   
    $array=array("河北"=>"石家庄","山西"=>"太原","广东"=>"广州","黑龙江"=>"哈尔滨","广西"=>"南宁","浙江"=>"杭州","江苏"=>"南京","山东"=>"济南","河南"=>"郑州");
    if($keyword=="8")
    {
     $a=array_rand($array,3);
     $contentStr="第一题".$a[0]."省会是哪里?";
     $a=implode(",",$a); 
     $sql="SELECT * FROM `menu2` where `user`= '{$fromUsername}'";
     $query=mysql_query($sql);
     $rm=mysql_fetch_array($query); 
     $user=$rm['user'];
     if (empty($user))
     {
      $sql="INSERT INTO `menu2` (`id` ,`user` ,`sec`,`answer`,`num`)VALUES (NULL , '{$fromUsername}', '8','{$a}','0')";
      mysql_query($sql);
     } 
     else
     {
      $sql="UPDATE `menu2` SET `sec`='8',`answer`='{$a}', `num`='0' where `user`= '{$fromUsername}'";
      mysql_query($sql);
     }
    }
    else
    {
     $sql="SELECT * FROM `menu2` where `user`= '{$fromUsername}'";
     $query=mysql_query($sql);
     $rm=mysql_fetch_array($query);
     $sec=$rm['sec'];
     $answer=$rm['answer'];
     $answer=explode(",",$answer);

     $num=$rm['num'];  
     if($sec=="8")
     {

      if($num=="0")
      {

       if($keyword==$array[$answer[0]])
       {
        $contentStr="恭喜你,答对了。\n第二题".$answer[1]."省会是哪里?";
        $sql="UPDATE `menu2` SET `num`='1' where `user`= '{$fromUsername}'";
        mysql_query($sql);
       }
       else
       {
        $contentStr="很遗憾,你错了,重新来玩吧。";
        $sql="UPDATE `menu2` SET `sec`='' where `user`= '{$fromUsername}'";
        mysql_query($sql);
       }
      } 
      elseif($num=="1")
      {
       if($keyword==$array[$answer[1]])
       {
        $contentStr="恭喜你,答对了。\n第三题".$answer[2]."省会是哪里?";
        $sql="UPDATE `menu2` SET `num`='2' where `user`= '{$fromUsername}'";
        mysql_query($sql);
       }
       else
       {
        $contentStr="很遗憾,再努力一把,重新来玩吧。";
        $sql="UPDATE `menu2` SET `sec`='' where `user`= '{$fromUsername}'";
        mysql_query($sql);
       }
      }
      elseif($num=="2")
      {
       if($keyword==$array[$answer[2]]){
       $contentStr="恭喜你,连闯三关!";
       $sql="UPDATE `menu2` SET `sec`='' where `user`= '{$fromUsername}'";
       mysql_query($sql);
      }
      else
      {
       $contentStr="很遗憾,就差一步,重新来玩吧。";
       $sql="UPDATE `menu2` SET `sec`='' where `user`= '{$fromUsername}'";
       mysql_query($sql);
      }
     }
    } 
    else 
    {
     $contentStr="请先输入8";
    }
   }
   $msgType="text";
   $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
   echo $resultStr;

  }
 }

 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设计模式 Visitor 访问者模式
Jun 28 PHP
PHP删除数组中特定元素的两种方法
Jul 02 PHP
thinkphp四种url访问方式详解
Nov 28 PHP
详解PHP中的null合并运算符
Dec 30 PHP
PHP中header用法小结
May 23 PHP
php 使用curl模拟登录人人(校内)网的简单实例
Jun 06 PHP
详解thinkphp实现excel数据的导入导出(附完整案例)
Dec 29 PHP
PHP调用Mailgun发送邮件的方法
May 04 PHP
解决Yii2邮件发送结果返回成功,但接收不到邮件的问题
May 23 PHP
PHP实现的激活用户注册验证邮箱功能示例
Jun 06 PHP
PHP空值检测函数与方法汇总
Nov 19 PHP
PHP实现创建一个RPC服务操作示例
Feb 23 PHP
php微信公众号开发之简答题
Oct 20 #PHP
php微信公众号开发之快递查询
Oct 20 #PHP
php微信公众号开发之翻页查询
Oct 20 #PHP
php微信公众号开发之校园图书馆
Oct 20 #PHP
php微信公众号开发之二级菜单
Oct 20 #PHP
php微信公众号开发之音乐信息
Oct 20 #PHP
php微信公众号开发之欢迎老朋友
Oct 20 #PHP
You might like
php UBB 解析实现代码
2011/11/27 PHP
PHP中is_file不能替代file_exists的理由
2014/03/04 PHP
PHP中使用Session配合Javascript实现文件上传进度条功能
2014/10/15 PHP
PHP序列化/对象注入漏洞分析
2016/04/18 PHP
yii2多图上传组件的使用教程
2018/05/10 PHP
PHP析构函数destruct与垃圾回收机制的讲解
2019/03/22 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
jQuery 行背景颜色的交替显示(隔行变色)实现代码
2009/12/13 Javascript
一个页面放2段图片滚动代码出现冲突的问题如何解决
2012/12/21 Javascript
基于jQuery实现的文字按钮表单特效整理
2014/12/07 Javascript
javascript表单处理具体实现代码(表单、链接、按钮)
2016/05/07 Javascript
js弹出框、对话框、提示框、弹窗实现方法总结(推荐)
2016/05/31 Javascript
JS实现微信摇一摇原理解析
2017/07/22 Javascript
微信小程序异步处理详解
2017/11/10 Javascript
Node.js readline模块与util模块的使用
2018/03/01 Javascript
vue-cli3.0 特性解读
2018/04/22 Javascript
解决betterScroll在vue中存在图片时,出现拉不动的问题
2018/09/27 Javascript
Node.JS获取GET,POST数据之queryString模块使用方法详解
2020/02/06 Javascript
[01:20]DOTA2 齐天大圣至宝动态展示
2016/12/13 DOTA
python getopt详解及简单实例
2016/12/30 Python
Python SQLite3数据库日期与时间常见函数用法分析
2017/08/14 Python
windows下python之mysqldb模块安装方法
2017/09/07 Python
Python 根据日志级别打印不同颜色的日志的方法示例
2019/08/08 Python
详解Python并发编程之从性能角度来初探并发编程
2019/08/23 Python
关于python导入模块import与常见的模块详解
2019/08/28 Python
使用tensorflow DataSet实现高效加载变长文本输入
2020/01/20 Python
CSS3模拟动画下拉菜单效果
2017/04/12 HTML / CSS
HTML5 Canvas旋转动画的2个代码例子(一个旋转的太极图效果)
2014/04/10 HTML / CSS
ProBikeKit英国:在线公路自行车之家
2017/02/10 全球购物
校本教研工作方案
2014/01/14 职场文书
户外活动策划方案
2014/03/12 职场文书
群教个人对照检查材料
2014/08/20 职场文书
群众路线教育实践活动剖析材料
2014/09/30 职场文书
老乡聚会通知
2015/04/23 职场文书
傲慢与偏见读书笔记
2015/06/29 职场文书
CSS Transition通过改变Height实现展开收起元素
2021/08/07 HTML / CSS