温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

使用php怎么实现微信公众号秒杀功能

发布时间:2021-06-08 15:46:22 来源:亿速云 阅读:115 作者:Leah 栏目:开发技术

这期内容当中小编将会给大家带来有关使用php怎么实现微信公众号秒杀功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

数据库小知识点:

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

核心代码:

 $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怎么实现微信公众号秒杀功能了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI