当前位置:首页 > PHP教程 > php高级应用 > 列表

微信公众平台DEMO(PHP)

发布:smiling 来源: PHP粉丝网  添加日期:2019-07-30 11:28:45 浏览: 评论:0 

本人在SAE环境下搭建了CI框架(其实这个小东西用不着用框架的),直接把代码写在了控制器里面。

  1. <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');  
  2.  
  3. //define your token 
  4.  
  5. define("TOKEN""109"); 
  6.  
  7. class Welcome extends CI_Controller { 
  8.  
  9.   public function index() 
  10.  
  11.   { 
  12.  
  13.     /* 
  14.  
  15.     $this->load->helper('url'); 
  16.  
  17.     $this->load->view('welcome_message'); 
  18.  
  19.     */  
  20.  
  21.     // use chat response 
  22.  
  23.     $this->responseMsg();  
  24.   } 
  25.  
  26.      
  27.  
  28.   // chat response 
  29.  
  30.   public function responseMsg() 
  31.  
  32.   { 
  33.  
  34.     //get post data, May be due to the different environments 
  35.  
  36.     $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; 
  37.  
  38.    
  39.  
  40.      //extract post data 
  41.  
  42.     if (!emptyempty($postStr)){ 
  43.  
  44.          
  45.  
  46.       $postObj = simplexml_load_string($postStr'SimpleXMLElement', LIBXML_NOCDATA); 
  47.  
  48.       $fromUsername = $postObj->FromUserName; 
  49.  
  50.       $toUsername = $postObj->ToUserName; 
  51.  
  52.       $MsgType = $postObj->MsgType; 
  53.  
  54.       $time = time(); 
  55.  
  56.          
  57.  
  58.       switch($MsgType){ 
  59.  
  60.         case('text'): 
  61.  
  62.           $keyword = trim($postObj->Content); 
  63.  
  64.           $textTpl = "<xml> 
  65.  
  66.                 <tousername><!--[CDATA[%s]]--></tousername> 
  67.  
  68.                 <fromusername><!--[CDATA[%s]]--></fromusername> 
  69.  
  70.                 <createtime>%s</createtime> 
  71.  
  72.                 <msgtype><!--[CDATA[%s]]--></msgtype> 
  73.  
  74.                 <content><!--[CDATA[%s]]--></content> 
  75.  
  76.                 </xml>"; 
  77.  
  78.           switch($keyword){ 
  79.  
  80.             case(1): 
  81.  
  82.               // Need to optimize 
  83.  
  84.               // random read data from jokes 
  85.  
  86.               $sql = 'SELECT * FROM jokes'
  87.  
  88.               $query = $this->db->query($sql); 
  89.  
  90.               $res = $query->result_array(); 
  91.  
  92.               $num_rows = $query->num_rows(); 
  93.  
  94.               $key = rand(0, $num_rows - 1); // Notice: The value of key is from 0. 
  95.  
  96.               //$contentStr = $key.'#'.$res[$key ]['content']; // debug 
  97.  
  98.               $contentStr = $res[$key ]['content'];  
  99.  
  100.               break
  101.  
  102.             case(2): 
  103.  
  104.               $contentStr = 'Your fromUsername is: '.$fromUsername;  
  105.  
  106.               break;              
  107.  
  108.             case(3): 
  109.  
  110.               $newsTpl = "<xml> 
  111.  
  112.                     <tousername><!--[CDATA[%s]]--></tousername> 
  113.  
  114.                     <fromusername><!--[CDATA[%s]]--></fromusername> 
  115.  
  116.                     <createtime>%s</createtime> 
  117.  
  118.                     <msgtype><!--[CDATA[%s]]--></msgtype> 
  119.  
  120.                     <articlecount>2</articlecount> 
  121.  
  122.                        
  123.  
  124.                     <articles> 
  125.  
  126.                       <item> 
  127.  
  128.                         <title><![CDATA[%s]]></title>  
  129.  
  130.                         <description><!--[CDATA[%s]]--></description> 
  131.  
  132.                         <picurl><!--[CDATA[%s]]--></picurl> 
  133.  
  134.                         <url><!--[CDATA[%s]]--></url> 
  135.  
  136.                       </item> 
  137.  
  138.                       <item> 
  139.  
  140.                         <title><![CDATA[%s]]></title> 
  141.  
  142.                         <description><!--[CDATA[%s]]--></description> 
  143.  
  144.                         <picurl><!--[CDATA[%s]]--></picurl> 
  145.  
  146.                         <url><!--[CDATA[%s]]--></url> 
  147.  
  148.                       </item> 
  149.  
  150.                     </articles> 
  151.  
  152.                        
  153.  
  154.                     </xml> "; 
  155.  
  156.                        
  157.  
  158.               $resultStr = sprintf($newsTpl$fromUsername$toUsername$time,'news'
  159.  
  160.                 '百度','''http://www.baidu.com/img/bdlogo.gif''http://www.baidu.com'
  161.  
  162.                 'Google','''''http://www.google.com'); // Notice: Google's logo is not suitable. 
  163.  
  164.               echo $resultStr
  165.  
  166.               exit// Notice: It's exit, not break.                 
  167.  
  168.             case(4): 
  169.  
  170.               $contentStr = "该功能正在开发中,敬请期待...";  
  171.  
  172.               break
  173.  
  174.                  
  175.  
  176.             /* others */ 
  177.  
  178.                
  179.  
  180.             default
  181.  
  182.               $contentStr = "回复数字 选择服务\n"
  183.  
  184.               $contentStr .= "1 笑话精选 
  185.  
  186. "; 
  187.  
  188.               $contentStr .= "2 获取您的Username...\n";   
  189.  
  190.               $contentStr .= "3 图文消息示例\n";  
  191.  
  192.               $contentStr .= "4 开发中...\n";  
  193.  
  194.               break
  195.  
  196.           } 
  197.  
  198.           $resultStr = sprintf($textTpl$fromUsername$toUsername$time'text'$contentStr); 
  199.  
  200.           break
  201.  
  202.              
  203.  
  204.         case('image'): 
  205.  
  206.              
  207.  
  208.           $media_id = $postObj->MediaId; 
  209.  
  210.           $imgTpl = "<xml> 
  211.  
  212.                 <tousername><!--[CDATA[%s]]--></tousername> 
  213.  
  214.                 <fromusername><!--[CDATA[%s]]--></fromusername> 
  215.  
  216.                 <createtime>%s</createtime> 
  217.  
  218.                 <msgtype><!--[CDATA[%s]]--></msgtype> 
  219.  
  220.                 <img> 
  221.  
  222.                   <mediaid><!--[CDATA[%s]]--></mediaid> 
  223.  
  224.                   
  225.  
  226.                 </xml>"; 
  227.  
  228.           $resultStr = sprintf($imgTpl$fromUsername$toUsername$time'image'$media_id); 
  229.  
  230.           break
  231.  
  232.              
  233.  
  234.           // try get the id of the receive image and analyse 
  235.  
  236.           /* 
  237.  
  238.           $media_id = $postObj->MediaId; 
  239.  
  240.           $textTpl = "<xml> 
  241.  
  242.                 <tousername><!--[CDATA[%s]]--></tousername> 
  243.  
  244.                 <fromusername><!--[CDATA[%s]]--></fromusername> 
  245.  
  246.                 <createtime>%s</createtime> 
  247.  
  248.                 <msgtype><!--[CDATA[%s]]--></msgtype> 
  249.  
  250.                 <content><!--[CDATA[%s]]--></content> 
  251.  
  252.                 </xml>"; 
  253.  
  254.           $length = strlen($media_id); 
  255.  
  256.           $contentStr = "I have received the image message you sent, the id of this image is # $media_id #, and the length of media_id is # $length #"; 
  257.  
  258.           $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, 'text', $contentStr); 
  259.  
  260.           break; 
  261.  
  262.           */ 
  263.  
  264.              
  265.  
  266.         case('voice'): 
  267.  
  268.           $textTpl = "<xml> 
  269.  
  270.                 <tousername><!--[CDATA[%s]]--></tousername> 
  271.  
  272.                 <fromusername><!--[CDATA[%s]]--></fromusername> 
  273.  
  274.                 <createtime>%s</createtime> 
  275.  
  276.                 <msgtype><!--[CDATA[%s]]--></msgtype> 
  277.  
  278.                 <content><!--[CDATA[%s]]--></content> 
  279.  
  280.                 </xml>";  
  281.  
  282.           $contentStr = '你说啥?俺听不见...'
  283.  
  284.           $resultStr = sprintf($textTpl$fromUsername$toUsername$time'text'$contentStr); 
  285.  
  286.           break
  287.  
  288.            
  289.  
  290.         /* others */ 
  291.  
  292.            
  293.  
  294.         default
  295.  
  296.           $resultStr = "Input something..."
  297.  
  298.           break
  299. //phpfensi.com 
  300.       } 
  301.  
  302.       echo $resultStr
  303.  
  304.          
  305.  
  306.     }else { 
  307.  
  308.       echo ""
  309.  
  310.       exit
  311.  
  312.     } 
  313.  
  314.   } 
  315.  

Tags: 微信公众平台DEMO

分享到: