php微信公众号开发之秒杀


Posted in PHP onOctober 20, 2018

本文实例为大家分享了php微信公众号秒杀功能的具体代码,供大家参考,具体内容如下

php微信公众号开发之秒杀

数据库小知识点:

strtotime:将字符串转换成时间
time():时间函数,调用系统当前时间 

php微信公众号开发之秒杀php微信公众号开发之秒杀
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($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 = "密码";

  /*接着调用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函数操作进行数据库操作
  */
  $msgType = "text";
  $shijian=strtotime("2018-08-23 23:00:00")-time();
  if($shijian>0)
  {
   $contentStr = "对不起,秒杀还没开始,2018年8月23日23点开始";
  }else{
   $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);

   if ($c==$fromUsername)
   {
    $contentStr = "你已经秒杀过了!";
   }else{
    $sql="SELECT `num` FROM `shuzi` WHERE 1";
    $query=mysql_query($sql);
    $rs=mysql_fetch_array($query);
    $b= $rs['num'];
    if ($b>0)
    {
     $contentStr = "恭喜你秒杀成功,凭此条微信到本店10元换取礼品";
     $b--;
     $sql="UPDATE `shuzi` SET `num`={$b} WHERE 1";
     mysql_query($sql); 

    }else{
     $contentStr = "很遗憾,你没有秒杀成功,下次再来吧!";
    }
    $sqluser="INSERT INTO `welcome`(`id`,`user`) VALUES (NULL,'{$fromUsername}')";
    mysql_query($sqluser);
   }

  }

  $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);     
  echo $resultStr;
  mysql_close($db);

 }else{
  echo "Input something...";
 }

数据库代码如下:

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

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- 数据库: `app_dq095`
--
-- --------------------------------------------------------
--
-- 表的结构 `shuzi`
--

CREATE TABLE IF NOT EXISTS `shuzi` (
 `num` int(11) NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

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

INSERT INTO `shuzi` (`num`) VALUES
(0);

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

--
-- 表的结构 `welcome`
--

CREATE TABLE IF NOT EXISTS `welcome` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `user` varchar(255) NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;

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

INSERT INTO `welcome` (`id`, `user`) VALUES
(5, 'ooD-ow-C8ZigAihscJN54pAWpu2g');

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($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函数操作进行数据库操作
      */
     $msgType = "text";
      $shijian=strtotime("2018-08-23 23:00:00")-time();
      if($shijian>0)
      {
       $contentStr = "对不起,秒杀还没开始,2018年8月23日23点开始";
      }else{
       $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);

       if ($c==$fromUsername)
       {
        $contentStr = "你已经秒杀过了!";
       }else{
        $sql="SELECT `num` FROM `shuzi` WHERE 1";
        $query=mysql_query($sql);
        $rs=mysql_fetch_array($query);
        $b= $rs['num'];
        if ($b>0)
        {
        $contentStr = "恭喜你秒杀成功,凭此条微信到本店10元换取礼品";
        $b--;
        $sql="UPDATE `shuzi` SET `num`={$b} WHERE 1";
        mysql_query($sql); 

        }else{
        $contentStr = "很遗憾,你没有秒杀成功,下次再来吧!";
        }
        $sqluser="INSERT INTO `welcome`(`id`,`user`) VALUES (NULL,'{$fromUsername}')";
        mysql_query($sqluser);
       }

      }

      $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 相关文章推荐
mysql 中InnoDB和MyISAM的区别分析小结
Apr 15 PHP
PHP 数组入门教程小结
May 20 PHP
php删除文件夹及其文件夹下所有文件的函数代码
Jan 23 PHP
PHP版 汉字转码的实现详解
Jun 09 PHP
如何使用Gitblog和Markdown建自己的博客
Jul 31 PHP
php获取文件后缀的9种方法
Mar 22 PHP
php打包压缩文件之ZipArchive方法用法分析
Apr 30 PHP
php 微信公众平台开发模式实现多客服的实例代码
Nov 07 PHP
PDO::beginTransaction讲解
Jan 27 PHP
PHP基于mcript扩展实现对称加密功能示例
Feb 21 PHP
针对PHP开发安全问题的相关总结
Mar 22 PHP
php设计模式之职责链模式定义与用法经典示例
Sep 19 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
php 读取文件夹下所有图片、文件的实例
Oct 17 #PHP
You might like
php文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
2012/06/13 PHP
PHP实现登录搜狐广告获取广告联盟数据的方法【附demo源码】
2016/10/14 PHP
使用vs code编辑调试php配置的方法
2019/01/29 PHP
不用AJAX和IFRAME,说说真正意义上的ASP+JS无刷新技术
2008/09/25 Javascript
javascript 同时在IE和FireFox获取KeyCode的代码
2010/02/07 Javascript
js去除输入框中所有的空格和禁止输入空格的方法
2014/06/09 Javascript
深入理解JavaScript系列(39):设计模式之适配器模式详解
2015/03/04 Javascript
jquery插件star-rating.js实现星级评分特效
2015/04/15 Javascript
jquery插件qrcode在线生成二维码
2015/04/26 Javascript
基于dropdown.js实现的两款美观大气的二级导航菜单
2015/09/02 Javascript
javascript实现简单的on事件绑定
2016/08/23 Javascript
jquery对所有input type=text的控件赋值实现方法
2016/12/02 Javascript
jQuery实现select模糊查询(反射机制)
2017/01/14 Javascript
AngularJS ng-repeat指令中使用track by子语句解决重复数据遍历错误问题
2017/01/21 Javascript
js获取对象,数组所有属性键值(key)和对应值(value)的方法示例
2019/06/19 Javascript
Swiper.js实现移动端元素左右滑动
2019/09/08 Javascript
详解小程序横屏方案对比
2020/06/28 Javascript
Nest.js 授权验证的方法示例
2021/02/22 Javascript
Python3实现从指定路径查找文件的方法
2015/05/22 Python
Python 比较文本相似性的方法(difflib,Levenshtein)
2018/10/15 Python
Python标准库shutil模块使用方法解析
2020/03/10 Python
在python中使用nohup命令说明
2020/04/16 Python
python中@property的作用和getter setter的解释
2020/12/22 Python
亚历山大·王官网:Alexander Wang
2017/06/23 全球购物
化石印度尼西亚在线商店:Fossil Indonesia
2019/03/11 全球购物
杭州SQL浙江浙大网新恩普软件有限公司
2013/07/27 面试题
五型班组建设方案
2014/02/10 职场文书
秋季开学典礼主持词
2014/03/19 职场文书
模特大赛策划方案
2014/05/28 职场文书
2014机关党员干部“正风肃纪”思想汇报
2014/09/15 职场文书
小学生纪律委员竞选稿
2015/11/19 职场文书
Nginx URL重写rewrite机制原理及使用实例
2021/04/01 Servers
基于Python实现的购物商城管理系统
2021/04/27 Python
MySQL慢查询的坑
2021/04/28 MySQL
实例讲解Python中sys.argv[]的用法
2021/06/03 Python
排查MySQL生产环境索引没有效果
2022/04/11 MySQL