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 相关文章推荐
PHP新手上路(三)
Oct 09 PHP
php 多线程上下文中安全写文件实现代码
Dec 28 PHP
php汉字转拼音的示例
Feb 27 PHP
smarty实现多级分类的方法
Dec 05 PHP
php实用代码片段整理
Nov 12 PHP
Yii2实现多域名跨域同步登录退出
Feb 04 PHP
Yii2实现中国省市区三级联动实例
Feb 08 PHP
PHP中empty,isset,is_null用法和区别
Feb 19 PHP
利用PHPExcel实现Excel文件的写入和读取
Apr 26 PHP
PHP Cli 模式设置进程名称的方法
Jun 12 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
Nov 25 PHP
PHP+Mysql分布式事务与解决方案深入理解
Feb 27 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
一个ftp类(ini.php)
2006/10/09 PHP
php中通过DirectoryIterator删除整个目录的方法
2015/03/13 PHP
PHP Ajax JavaScript Json获取天气信息实现代码
2016/08/17 PHP
iis6手工创建网站后无法运行php脚本的解决方法
2017/06/08 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
Win10 下安装配置IIS + MySQL + nginx + php7.1.7
2017/08/04 PHP
JS操作XML中DTD介绍及使用方法分析
2019/07/04 PHP
js escape,unescape解决中文乱码问题的方法
2010/05/26 Javascript
jQuery对表单的操作代码集合
2011/04/06 Javascript
ExtJs纵坐标值重复问题的解决方法
2014/02/27 Javascript
JS+CSS实现六级网站导航主菜单效果
2015/09/28 Javascript
AngularJS入门教程之XHR和依赖注入详解
2016/08/18 Javascript
jQuery实现鼠标选中文字后弹出提示窗口效果【附demo源码】
2016/09/05 Javascript
微信小程序的生命周期的详解
2017/10/19 Javascript
js技巧之十几行的代码实现vue.watch代码
2018/06/09 Javascript
解决iview多表头动态更改列元素发生的错误的方法
2018/11/02 Javascript
vue登录页面cookie的使用及页面跳转代码
2019/07/10 Javascript
微信小程序indexOf的替换方法(推荐)
2020/01/14 Javascript
[00:27]DOTA2次级职业联赛 - Lilith战队宣传片
2014/12/01 DOTA
教你用Python脚本快速为iOS10生成图标和截屏
2016/09/22 Python
单链表反转python实现代码示例
2018/02/08 Python
Python文件监听工具pyinotify与watchdog实例
2018/10/15 Python
python 等差数列末项计算方式
2020/05/03 Python
python利用递归方法实现求集合的幂集
2020/09/07 Python
python 爬取英雄联盟皮肤并下载的示例
2020/12/04 Python
Django 实现图片上传和下载功能
2020/12/31 Python
NYX Professional Makeup英国官网:美国平价专业彩妆品牌
2019/11/13 全球购物
餐饮加盟计划书
2014/01/10 职场文书
三年大学生活自我鉴定
2014/01/21 职场文书
生物科学专业职业规划书范文
2014/02/11 职场文书
《维生素c的故事》教学反思
2014/02/18 职场文书
竞聘演讲稿怎么写
2014/08/28 职场文书
个人买房协议书范本
2014/10/06 职场文书
高中生毕业评语
2014/12/30 职场文书
Java异常处理try catch的基本用法
2021/12/06 Java/Android
html原生table实现合并单元格以及合并表头的示例代码
2023/05/07 HTML / CSS