最近弄了一个一站到底的代码,说明:不是本人原创,是别人弄好的,感觉有点古老,还是贴上来再说吧。

这个我是在bae平台上测试的,因为我的空间到期了,所以用百度的,下面开始详解:
文件有两个:
一个是index.php 另一个是conn.php 还有三个sql数据表:分别是question_bank.sql、question_user.sql、user.sql
一:index.php代码
<?php
//define your token
define("TOKEN", "你的token");
$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();
$openid=$fromUsername;
$date=date('Y-m-d');
$time=date('H:i:s');
               $textTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content>{begin-context}<![CDATA[%s]]></Content>
<FuncFlag>0</FuncFlag>
</xml>";             
if(!empty( $keyword ))
               {
                 include_once('conn.php');
                 $str1 = $keyword;
$arr = array();
for($i = 0, $len = strlen($str1); $i < $len; ++$i) 
{
  if(!count($arr) || $arr[count($arr) - 1] !== ' ' || $str1{$i} !== ' ') 
  {
  $arr[] = $str1{$i};
  }    
}   
$keyword= implode('', $arr);
  $myarr_str=explode(" ",$keyword);//关键词的分割,以空格分割出来
  $keyword=$myarr_str[0];//得到分割后的第一个数组
//==============================================================================
switch($keyword)
{
  case '一站到底':
                           $sql2="select `name` from `user` where `openid`='{$openid}'" ;
$query2=mysql_query($sql2);
$rs= mysql_num_rows($query2);
$rs_name= mysql_fetch_array($query2);
if(!empty($rs)&&$rs==1)
{
$sql_q="SELECT * FROM `question_bank` ORDER BY RAND() LIMIT 1";
$query_q=mysql_query($sql_q);
$rs_q=mysql_fetch_array($query_q);
$sql_u="SELECT * FROM `question_user` WHERE `openid`='{$openid}'";
$query_u=mysql_query($sql_u);
$rs_num_u=mysql_num_rows($query_u);
if($rs_num_u==0||empty($rs_num_u))
{
$sql_into_u="INSERT INTO `question_user`(`id`, `openid`, `qid`, `reply_num`, `right_num`, `score`, `lastdate`) VALUES (null,'{$openid}','{$rs_q[id]}','1','0','0',now())";
$query_into_u=mysql_query($sql_into_u);
}else
{
                                   $rs_u=mysql_fetch_array($query_u);
                                 
if($rs_u[lastdate]<$date)
{
  $date=date('Y-m-d H:i:s',time());
$sql_up_u="UPDATE `question_user` SET `qid`='{$rs_q[id]}',`reply_num`='0',`right_num`='0',`lastdate`='{$date}' WHERE `openid`='{$openid}'";
$query_up_u=mysql_query($sql_up_u);
}else
{
                                       if($rs_u[reply_num]>=10)
                                       {
                                     $str="你今天已经回答了10道题了,请明天再来哦!";
                                       break;
                                  }else
                                  {
                                      $reply_num=$rs_u[reply_num]+1; 
  $date=date('Y-m-d H:i:s',time());
$sql_up_u="UPDATE `question_user` SET `qid`='{$rs_q[id]}',`reply_num`='{$reply_num}',`lastdate`='{$date}' WHERE `openid`='{$openid}'";
$query_up_u=mysql_query($sql_up_u);
                                  }
  }
  }
switch($rs_q[option_num])
{
case '2':
$str="问题:\n{$rs_q[question]}\n选项:\nA、{$rs_q[optionA]} B、{$rs_q[optionB]}";
break;
case '3':
$str="问题:\n{$rs_q[question]}\n选项:\nA、{$rs_q[optionA]} B、{$rs_q[optionB]} C、{$rs_q[optionC]}";
break;
case '4':
$str="问题:\n{$rs_q[question]}\n选项:\nA、{$rs_q[optionA]} B、{$rs_q[optionB]} C、{$rs_q[optionC]} D、{$rs_q[optionD]}";
break;
case '5':
$str="问题:\n{$rs_q[question]}\n选项:\nA、{$rs_q[optionA]} B、{$rs_q[optionB]} C、{$rs_q[optionC]} D、{$rs_q[optionD]} E、{$rs_q[optionE]}";
break;
case '6':
$str="问题:\n{$rs_q[question]}\n选项:\nA、{$rs_q[optionA]} B、{$rs_q[optionB]} C、{$rs_q[optionC]} D、{$rs_q[optionD]} E、{$rs_q[optionE]} F、{$rs_q[optionF]}";
break;
}
                        
                               $str="分值为:".$rs_q[figure]."分的".$str."\n———————————-——\n回答请输入【答案 X】如【答案 A】或【答案 ACD】!跳过请再输入【一站到底】";
}else
{
$str="请输入【绑定 姓名】进行绑定,如:【绑定 张三】。一定要在中间加空格哦!绑定能参与积分排名哦!";
}
break;
                           case '绑定':
$sql_named="select `name` from `user` where `openid`='{$openid}'" ;
$query_named=mysql_query($sql_named);
$rs_named= mysql_fetch_array($query_named);
if(($rs_named)&&$rs_named>=1)
{
  $str="你的名字已绑定,需要更改绑定的名字,请发送我要更改名字的绑定,管理员看到消息会马上为你处理!";
}else
{
$srt_len=count($myarr_str);
if($srt_len>2)
{
unset($myarr_str[0]);
foreach($myarr_str as $value)
{
$name=$name.' '.$value;
}
}else 
{
$name=$myarr_str[1];
}  
                  $sql3="INSERT INTO `user` (id,name,openid,integral) VALUES  (null,'{$name}','{$openid}',0) " ;
              $query3=mysql_query($sql3);
                                   $sql_name="select `name` from `user` where `openid`='{$openid}' " ;
                                   $query_name=mysql_query($sql_name);
                                   $rs_name= mysql_fetch_array($query_name);
                                   $str="绑定成功,你的名字是:$rs_name[name];请输入一站到底,参与答题!";//这里是绑定成功,进行的提示
     
                           .}
break;//绑定的结束
case '答案':
$num_a=count($myarr_str);
if($num_a==2)
{
$sql_u="SELECT * FROM `question_user` WHERE `openid`='{$openid}'";
$query_u=mysql_query($sql_u);
$rs_num_u=mysql_num_rows($query_u);
                               $rs_u=mysql_fetch_array($query_u);
if($rs_num_u==0||empty($rs_num_u)||$rs_u[qid]==0)
{
$str="亲,你还没有拿到题目哦!请先输入【一站到底】";
}else
{
$preg = '[AaBbCcDdEeFf]+';
if(preg_match("/$preg/",$myarr_str[1]))
{
  $myarr_str[1]=strtoupper($myarr_str[1]);
                              $sql="SELECT * FROM `question_user` WHERE `openid`='{$openid}'";
$sql="SELECT * FROM `question_user` WHERE `openid`='{$openid}'";
  $query=mysql_query($sql);
  $rs=mysql_fetch_array($query);
  $starr=strtotime($rs[lastdate]);
  $etarr=time();
  $t_num=$etarr-$starr;
  if($t_num<=60)
  {
$sql_a="SELECT * FROM `question_bank` WHERE `id`='{$rs_u[qid]}'";
$query_a=mysql_query($sql_a);
$rs_a=mysql_fetch_array($query_a);
$an_arr=str_split($rs_a[answer]);
for($i=0;$i<$rs_a[option_num];$i++)
{
if($an_arr[$i]==1)
{
switch($i){
case '0':
$an.=A;
break;
case '1':
$an.=B;
break;
case '2':
$an.=C;
break;
case '3':
$an.=D;
break;
case '4':
$an.=E;
break;
case '5':
$an.=F;
break;
}
}
      }
      if($myarr_str[1]==$an)
      {
$right_num=$rs_u[right_num]+1;
$score=$rs_u[score]+$rs_a[figure];
$sql_up_u="UPDATE `question_user` SET `qid`='',`right_num`='{$right_num}',`score`='{$score}',`lastdate`=now() WHERE `openid`='{$openid}'";
$query_up_u=mysql_query($sql_up_u);
$sql_sco="SELECT * FROM `user` WHERE `openid`='{$openid}'";
$query_sco=mysql_query($sql_sco);
$rs_sco=mysql_fetch_array($query_sco);
$score=$rs_a[figure]+$rs_sco[integral];
$sql_up_tu="UPDATE `user` SET `integral`='{$score}' WHERE `openid`='{$openid}'";
$query_up_tu=mysql_query($sql_up_tu);
                                          $str_r="恭喜你!猜对了!加".$rs_a[figure]."分,你现在的分数为:".$score;
  //==================
$sql_q="SELECT * FROM `question_bank` ORDER BY RAND() LIMIT 1";
$query_q=mysql_query($sql_q);
$rs_q=mysql_fetch_array($query_q);
$sql_u="SELECT * FROM `question_user` WHERE `openid`='{$openid}'";
$query_u=mysql_query($sql_u);
$rs_u=mysql_fetch_array($query_u);
          if($rs_u[reply_num]>=10)
          {
                                            $str=$str_r."你今天已经回答了10道题了,请明天再来哦!你目前的得分是{$rs_sco[integral]}分!";
                                              break;
                                          }else
                                          {
 $reply_num=$rs_u[reply_num]+1; 
 $date=date('Y-m-d H:i:s',time());
$sql_up_u="UPDATE `question_user` SET `qid`='{$rs_q[id]}',`reply_num`='{$reply_num}',`lastdate`='{$date}' WHERE `openid`='{$openid}'";
$query_up_u=mysql_query($sql_up_u);
switch($rs_q[option_num])
{
case '2':
$str="问题:\n{$rs_q[question]}\n选项:\nA、{$rs_q[optionA]} B、{$rs_q[optionB]}";
break;
case '3':
$str="问题:\n{$rs_q[question]}\n选项:\nA、{$rs_q[optionA]} B、{$rs_q[optionB]} C、{$rs_q[optionC]}";
break;
case '4':
$str="问题:\n{$rs_q[question]}\n选项:\nA、{$rs_q[optionA]} B、{$rs_q[optionB]} C、{$rs_q[optionC]} D、{$rs_q[optionD]}";
break;
case '5':
$str="问题:\n{$rs_q[question]}\n选项:\nA、{$rs_q[optionA]} B、{$rs_q[optionB]} C、{$rs_q[optionC]} D、{$rs_q[optionD]} E、{$rs_q[optionE]}";
break;
case '6':
$str="问题:\n{$rs_q[question]}\n选项:\nA、{$rs_q[optionA]} B、{$rs_q[optionB]} C、{$rs_q[optionC]} D、{$rs_q[optionD]} E、{$rs_q[optionE]} F、{$rs_q[optionF]}";
break;
              }
  if($rs_u[reply_num]==10)
  {
                                      $str=$str_r;
                                  }else
                                  {
      $str=$str_r."\n———————————-——\n"."分值为:".$rs_q[figure]."分的".$str."\n———————————-——\n回答请输入【答案 X】如【答案 A】或【答案 ACD】!请在一分钟内做答,跳过请再输入【一战到底】";
  }
}
//=================  
      }else
      {
$reply_num=$rs_u[reply_num]+1;
$sql_up_u="UPDATE `question_user` SET `qid`='',`lastdate`=now() WHERE `openid`='{$openid}'";
$query_up_u=mysql_query($sql_up_u);
$sql_sco="SELECT * FROM `user` WHERE `openid`='{$openid}'";
$query_sco=mysql_query($sql_sco);
$rs_sco=mysql_fetch_array($query_sco);
                                  $str_r="这题你答错了!正确答案是:{$an}\n你现在的分数为:{$rs_sco[integral]}";
  //==================
$sql_q="SELECT * FROM `question_bank` ORDER BY RAND() LIMIT 1";
$query_q=mysql_query($sql_q);
$rs_q=mysql_fetch_array($query_q);
$sql_u="SELECT * FROM `question_user` WHERE `openid`='{$openid}'";
$query_u=mysql_query($sql_u);
$rs_u=mysql_fetch_array($query_u);
  if($rs_u[reply_num]>=10)
  {
                                     $str=$str_r."你今天已经回答了10道题了,请明天再来哦!你目前的得分是{$rs_sco[integral]}分!";
                                      break;
                                  }else
                                  {
  $reply_num=$rs_u[reply_num]+1; 
  $date=date('Y-m-d H:i:s',time());
$sql_up_u="UPDATE `question_user` SET `qid`='{$rs_q[id]}',`reply_num`='{$reply_num}',`lastdate`='{$date}' WHERE `openid`='{$openid}'";
$query_up_u=mysql_query($sql_up_u);
switch($rs_q[option_num])
{
case '2':
$str="问题:\n{$rs_q[question]}\n选项:\nA、{$rs_q[optionA]} B、{$rs_q[optionB]}";
break;
case '3':
$str="问题:\n{$rs_q[question]}\n选项:\nA、{$rs_q[optionA]} B、{$rs_q[optionB]} C、{$rs_q[optionC]}";
break;
case '4':
$str="问题:\n{$rs_q[question]}\n选项:\nA、{$rs_q[optionA]} B、{$rs_q[optionB]} C、{$rs_q[optionC]} D、{$rs_q[optionD]}";
break;
case '5':
$str="问题:\n{$rs_q[question]}\n选项:\nA、{$rs_q[optionA]} B、{$rs_q[optionB]} C、{$rs_q[optionC]} D、{$rs_q[optionD]} E、{$rs_q[optionE]}";
break;
case '6':
$str="问题:\n{$rs_q[question]}\n选项:\nA、{$rs_q[optionA]} B、{$rs_q[optionB]} C、{$rs_q[optionC]} D、{$rs_q[optionD]} E、{$rs_q[optionE]} F、{$rs_q[optionF]}";
break;
      }
                                      if($rs_u[reply_num]==10)
                                      {
                                          $str=$str_r;
                                      }else
                                      {
          $str=$str_r."\n———————————-——\n"."分值为:".$rs_q[figure]."分的".$str."\n———————————-——\n回答请输入【答案 X】如【答案 A】或【答案 ACD】!请在一分钟内做答,跳过请再输入【一战到底】";
                                      }
  }  
//=================
      }
      }else
      {
  $reply_num=$rs_u[reply_num]+1;
  $sql_up_u="UPDATE `question_user` SET `qid`='',`lastdate`=now() WHERE `openid`='{$openid}'";
$query_up_u=mysql_query($sql_up_u);
$query_up_u=mysql_query($sql_up_u);
$sql_sco="SELECT * FROM `user` WHERE `openid`='{$openid}'";
$query_sco=mysql_query($sql_sco);
$rs_sco=mysql_fetch_array($query_sco);
      $str_r="你已经超时,进入下一题";
    //==================
$sql_q="SELECT * FROM `question_bank` ORDER BY RAND() LIMIT 1";
$query_q=mysql_query($sql_q);
$rs_q=mysql_fetch_array($query_q);
$sql_u="SELECT * FROM `question_user` WHERE `openid`='{$openid}'";
$query_u=mysql_query($sql_u);
$rs_u=mysql_fetch_array($query_u);
      if($rs_u[reply_num]>=10)
      {
                                     $str="你今天已经回答了10道题了,请明天再来哦!你目前的得分是{$rs_sco[integral]}分!";
                                      break;
                                      }else
                                      {
  $reply_num=$rs_u[reply_num]+1; 
  $date=date('Y-m-d H:i:s',time());
$sql_up_u="UPDATE `question_user` SET `qid`='{$rs_q[id]}',`reply_num`='{$reply_num}',`lastdate`='{$date}' WHERE `openid`='{$openid}'";
$query_up_u=mysql_query($sql_up_u);
switch($rs_q[option_num])
{
case '2':
$str="问题:\n{$rs_q[question]}\n选项:\nA、{$rs_q[optionA]} B、{$rs_q[optionB]}";
break;
case '3':
$str="问题:\n{$rs_q[question]}\n选项:\nA、{$rs_q[optionA]} B、{$rs_q[optionB]} C、{$rs_q[optionC]}";
break;
case '4':
$str="问题:\n{$rs_q[question]}\n选项:\nA、{$rs_q[optionA]} B、{$rs_q[optionB]} C、{$rs_q[optionC]} D、{$rs_q[optionD]}";
break;
case '5':
$str="问题:\n{$rs_q[question]}\n选项:\nA、{$rs_q[optionA]} B、{$rs_q[optionB]} C、{$rs_q[optionC]} D、{$rs_q[optionD]} E、{$rs_q[optionE]}";
break;
case '6':
$str="问题:\n{$rs_q[question]}\n选项:\nA、{$rs_q[optionA]} B、{$rs_q[optionB]} C、{$rs_q[optionC]} D、{$rs_q[optionD]} E、{$rs_q[optionE]} F、{$rs_q[optionF]}";
break;
}
$str=$str_r."\n———————————-——\n"."分值为:".$rs_q[figure]."分的".$str."\n———————————-——\n回答请输入【答案 X】如【答案 A】或【答案 ACD】!请在一分钟内做答,跳过请再输入【一战到底】";
  }  
      //=================
  }
  }else
  {
  $str="你输入的是非法字符,请重新输入";
      }
}//===
}else
{
$str="你的输入有误,请重新输入,格式【答案 A】或【答案 ACD】";
}
break;
  case "退出":
                       $contentStr = "{end-context}退出成功";
                   $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, "text", $contentStr);
                   echo $resultStr;
                       break;
                  }
  
//==============================================================================
             $msgType = "text";
               $contentStr =$str;
               $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
               echo $resultStr;
              }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;
}
}
}
?>
二、conn.php代码
<?php 
$dbname = '你的数据库';//这里填写你BAE数据库的名称
 $host = getenv('HTTP_BAE_ENV_ADDR_SQL_IP');
 $port = getenv('HTTP_BAE_ENV_ADDR_SQL_PORT');
 $user = getenv('HTTP_BAE_ENV_AK');
 $pwd = getenv('HTTP_BAE_ENV_SK');
 $link = @mysql_connect("{$host}:{$port}",$user,$pwd,true);
 if(!$link) {
 die("Connect Server Failed: " . mysql_error($link));
}
 if(!mysql_select_db($dbname,$link)) {
 die("Select Database Failed: " . mysql_error($link));
}
//以上连接数据库
session_start();
//以上是连接数据库,如果你的数据库是自己的空间,就按照你自己连接数据库的方式连接
?>
数据表里有大约五万多条题目,下载地址在我的百度网盘:http://pan.baidu.com/s/1tFxFx
数据

weixin微信公众号一站到底游戏代码(有点普通)相关推荐

  1. 微信公众号裂变式营销代码实现,PHP,具体看图片

    微信公众号裂变式营销代码实现,先讲下基础原理,先生成带有用户参数的二维码,然后用php自带的gd库处理,生成带有用户头像,昵称,参数二维码,营销信息的自定义图片,再将图片传入微信公众号临时素材,当其他 ...

  2. HTML5期末大作业:学生网页设计——微信公众号6页(代码质量好) 学生DW网页设计作业源码 web课程设计网页规划与设计

    HTML5期末大作业:学生网页设计--微信公众号6页(代码质量好) 学生DW网页设计作业源码 web课程设计网页规划与设计 HTML+CSS+JavaScript(毕业设计) 常见网页设计作业题材有 ...

  3. asp群发微信公众号模板消息代码asp写的

    asp群发微信公众号模板消息代码asp写的,主要用于对已经入库的会员群发模板消息 <% '=群发模板信息=转载请保留作者信息:18611436777======== If Request(&qu ...

  4. 微信公众号编辑菜单栏代码

    微信公众号编辑菜单栏代码 这是一款基于jQuery的微信公众号在线菜单编辑修改功能,可以添加和删除菜单名称.菜单类型.菜单值等.保存提交菜单类型可以获取json数据. 演示地址 下载地址

  5. 如何优雅的在微信公众号中编辑代码

    这篇文章严格意义上是写给有公众号且公众号文章需要贴代码的朋友们看的. 1 公众号编辑器真难用 自从入坑公众号以来,被公众号的这个编辑器简直折磨死了.我发的文章基本上是少不了贴代码的,可是每次贴上去的代 ...

  6. 微信公众号h5游戏核销流程

    各大餐饮门店采用微信公众号H5游戏营销的例子已经屡见不鲜,不论是火锅,咖啡厅,西餐厅都有商家们的布局,作为商家来说往往存在一个疑问,如何将游戏派发的优惠券作用于门店里呢?流程上到底是怎么样的? 核销步 ...

  7. 网上买的几百元的最新微信公众号H5游戏平台完整源码下载

    网上买的几百元的最新微信公众号H5游戏平台完整源码下载 微信Html5游戏平台源码,大家可以直接打开浏览器本地测试,到时候修改下关注链接就行,简单易学 游戏太多了,不上图了,大家自己下去研究吧! 下载 ...

  8. asp群发微信公众号模板消息代码

    刚刚做的一个项目需要用到asp群发微信公众号的模板消息, 以前没做过,想了一会用了下面这种方法实现的模板消息群发推送,效果很好. asp群发微信公众号模板消息代码

  9. python微信公众号秒杀代码_如何在微信公众号编辑Python代码?

    自己没事搞了公众号,萌新的学习日记,在编辑的时候,想要加一些Python代码进去,但是微信公众号是这样的啊,没有可以加入代码的地方 直接引用代码完全没法看,后来在群里听说chrome有一个神器:mar ...

最新文章

  1. selenium--driver.switchTo()
  2. 通过define _CRTDBG_MAP_ALLOC宏来检测windows上的code是否有内存泄露
  3. 特征工程之MinMaxScaler、StandardScaler、Normalizer、Binarizer
  4. 从零开始带你一步一步使用YOLOv3测试自己的数据
  5. shell脚本工具之控制结构
  6. [CF903G]Yet Another Maxflow Problem
  7. 在WildFly和OpenShift上的WebSocket聊天
  8. cesium坡度坡向分析_综合分析地理空间,科学规划乡村区域
  9. TinyFrame开篇:基于CodeFirst的ORM
  10. linux 窗口管理器_您最喜欢的Linux窗口管理器是什么?
  11. SpringBoot项目实现配置实时刷新功能
  12. 二分法查找——C++代码
  13. 由耶稣遗物看西方历史的造假
  14. C语言中指针的数据类型小结
  15. linux 如何开放外网端口映射本地端口
  16. leggedrobotics free gait 足式机器人自由步态 苏黎世机器人系统实验室
  17. 英文字体识别在线识别_如何查找和识别字体
  18. SpyNote5.0 Client_APK逆向分析
  19. 网站优化怎样的外链能轻松收录,网站外链优化攻略
  20. 数据分析师需要学习什么课程?

热门文章

  1. android opengl es 粒子效果实例代码
  2. linux find 命令使用注意
  3. (数据库系统概论|王珊)第四章数据库安全性:习题
  4. [Python]网络爬虫(12):爬虫框架Scrapy的第一个爬虫示例入门教程
  5. Twisted twisted.python.log日志
  6. docker常用参数详解,docker run常用参数详解(精)
  7. C/C++:Winsock网络编程—ping命令的简单实现
  8. C语言:16进制字符串转int
  9. 在Linux下下载RPM包
  10. JavaScript(一)---- 概述