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分页示例代码
Mar 19 PHP
通过缓存数据库结果提高PHP性能的原理介绍
Sep 05 PHP
zend framework文件上传功能实例代码
Dec 25 PHP
php解析json数据实例
Aug 19 PHP
PHP中array_map与array_column之间的关系分析
Aug 19 PHP
基于GD2图形库的PHP生成图片缩略图类代码分享
Feb 08 PHP
基于PHP给大家讲解防刷票的一些技巧
Nov 18 PHP
thinkphp项目部署到Linux服务器上报错“模板不存在”如何解决
Apr 27 PHP
php实现映射操作实例详解
Oct 02 PHP
thinkphp5框架前后端分离项目实现分页功能的方法分析
Oct 08 PHP
PHP基本语法
Mar 31 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中防止SQL注入攻击和XSS攻击的两个简单方法
2010/04/15 PHP
php CI框架插入一条或多条sql记录示例
2014/07/29 PHP
ThinkPHP 3.2 数据分页代码分享
2014/10/14 PHP
PHP图像处理之imagecreate、imagedestroy函数介绍
2014/11/19 PHP
Symfony2之session与cookie用法小结
2016/03/18 PHP
php进行ip地址掩码运算处理的方法
2016/07/11 PHP
调用js时ie6和ie7,ff的区别
2009/08/19 Javascript
JS 非图片动态loading效果实现代码
2010/04/09 Javascript
jQuery版Tab标签切换
2011/03/16 Javascript
常见效果实现之返回顶部(结合淡入、淡出、减速滚动)
2012/01/04 Javascript
javascript两种function的定义介绍及区别说明
2013/05/02 Javascript
js创建子窗口并且回传值示例代码
2013/07/02 Javascript
javascript简单性能问题及学习笔记
2014/02/04 Javascript
js对字符的验证方法汇总
2015/02/04 Javascript
jQuery实现页面滚动时动态加载内容的方法
2015/03/20 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
2015/08/25 Javascript
JQuery实现级联下拉框效果实例讲解
2015/09/17 Javascript
总结十个Angular.js由浅入深的面试问题
2016/08/26 Javascript
React学习笔记之条件渲染(一)
2017/07/02 Javascript
ES6中Array.includes()函数的用法
2017/09/20 Javascript
微信小程序实现列表页的点赞和取消点赞功能
2018/11/02 Javascript
30分钟用Node.js构建一个API服务器的步骤详解
2019/05/24 Javascript
简单了解JS打开url的方法
2020/02/21 Javascript
浅谈Vue 函数式组件的使用技巧
2020/06/16 Javascript
Vue3+elementui plus创建项目的方法
2020/12/01 Vue.js
python如何去除字符串中不想要的字符
2020/07/05 Python
Python脚本修改阿里云的访问控制列表的方法
2019/03/08 Python
python实现最短路径的实例方法
2020/07/19 Python
python线程优先级队列知识点总结
2021/02/28 Python
详解CSS3弹性伸缩盒
2020/09/21 HTML / CSS
京东国际站:JOYBUY
2017/11/23 全球购物
Diamondback自行车:拥有你的冒险
2019/04/22 全球购物
涉及车辆房产分割的离婚协议书范文
2014/10/12 职场文书
郭明义观后感
2015/06/08 职场文书
培训感想范文
2015/08/07 职场文书
初中数学教学随笔
2015/08/15 职场文书