• cURL简单采集
  1. 初始化 cURL  $c = curl_init()
  2. 设置cURL  
    1. 设置URL curl_setopt($c , CURLOPT_URL, ‘’)
    2. 以文件流返回  curl_setopt($c , CURLOPT_RETURNTRANSFER,true) ;
  3. 执行采集   $output = curl_exec($c)
  4. 关闭      curl_close($c)

  • 微信交互信息的SDK (一些常用功能的封装)

特性

  1. 便捷 经常用到的方法写到SDK 其他项目直接引入SDK 调用方法
  2. 可重复利用性
  3. 实现  把常用的 回复纯文本|单图文|多图文封装
  • 第三方API在微信中实现
  1. 调用免费天气API 通过cURL返回json类型天气信息

  • 自定义菜单

简介

  • 最多包含3个一级菜单  每个一级菜单最多5个二级菜单
  • 一级菜单最多4个汉字 二级可以有多个 超出省略号(...)代替
  • 测试时 取消关注再次关注看效果

多种类型按钮

  1. click: 点击推送事件
  2. view:跳转URL

...

测试账号功能

  • 未认证的个人号 没有权限调用  自定义菜单接口等高级接口
  • 订阅号主体需要是企业 提供企业名称 营业执照注册号 认证才可以使用高级接口

准备干活

  • 封装cURL (get|post)
  • 将access_token 存session甚至超时时间
  • 自定义菜单
  • 删除菜单

自定义菜单推送

  1. 接收消息

    1. MsgType 消息类型,event
    2. Event 事件类型,CLICK
    3. EventKey 事件KEY值,与自定义菜单接口中KEY值对应
  2. 回复的时候
    1. strtolower($postObj->MsgType) == 'event'
    2. strtolower($postObj->Event) == 'click'
    3. strtolower($postObj->EventKey) == 'XXX' 自定义菜单时 key
<?php
namespace app\index\controller;class Index
{public function indexBak(){$signature = $_GET['signature'] ;$timestamp = $_GET['timestamp'] ;$nonce = $_GET['nonce'] ;$echostr = $_GET['echostr'] ;$token = 'XXXXXXXXXXXXXX' ;$arr = array($token,$timestamp,$nonce) ;//自然排序sort($arr) ;//拆成字符串 加密$str = sha1(implode($arr)) ;/*第一次配置个人服务器时候 为新服务器会传递参数$echostr与个人服务器建立连接之后  不会传递该参数*/if($str == $signature && $echostr) {echo $echostr ;die ;}/*else {$this->indexBak() ;}*/}/*关注 |取消关注 subscribe|unsubscribe*/public function index() {//获取用户信息 xml数据包$data = file_get_contents("php://input") ;file_put_contents('data.txt', $data) ;//xml格式数据转换成对象$postObj = simplexml_load_string($data,'SimpleXMLElement',LIBXML_NOCDATA) ;$toUser = $postObj->FromUserName ;$fromUser = $postObj->ToUserName ;$time = time() ;//如果消息类型是  event  (取消)关注事件if(strtolower($postObj->MsgType) == 'event') {//如果 事件类型,subscribe(订阅)  推送文本信息if(strtolower($postObj->Event) == 'subscribe') {$type = 'text' ;$content = "欢迎加入XXX,从今天起,我们将携手共进,建议添加个人微信:dongling_shisan,经常会有霸王餐、试吃券、吃货聚会等福利哦! 回复 1 查看热门菜品, 回复 2 跳转到CSDN查看相关资料,回复 3 看片, 回复 5 看大片, ... " ;//拼接 响应数据包模板 %s字符串类型占位 sprintf()$template = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><Content><![CDATA[%s]]></Content></xml>" ;//变量 依次替换字符串类型%s占位$info = sprintf($template,$toUser,$fromUser,$time,$type,$content) ;echo $info ;}else if(strtolower($postObj->Event) == 'click'){if(strtolower($postObj->EventKey) == 'tuijiancai') {$title1 = "推荐菜品类" ;$description1 = "半神半圣亦半仙 全儒全道是全贤 脑中真书藏万卷 掌握文武半边天" ;//图片链接  网络地址$picurl = "https://img4.mukewang.com/szimg/5aaa55850001a3ef10800600.jpg" ;//点击图文跳转的链接$url = "http://www.baidu.com" ;$template = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[news]]></MsgType><ArticleCount>1</ArticleCount><Articles><item><Title><![CDATA[%s]]></Title><Description><![CDATA[%s]]></Description><PicUrl><![CDATA[%s]]></PicUrl><Url><![CDATA[%s]]></Url></item></Articles></xml>" ;$info = sprintf($template,$toUser,$fromUser,$time,$title1,$description1,$picurl,$url) ;echo $info ;}if(strtolower($postObj->EventKey) == 'yuanchuangshuangwen1'){$title1 = "原创文章" ;$description1 = "半神半圣亦半仙 全儒全道是全贤 脑中真书藏万卷 掌握文武半边天" ;//图片链接  网络地址$picurl = "https://img4.mukewang.com/szimg/5aaa55850001a3ef10800600.jpg" ;//点击图文跳转的链接$url = "http://www.baidu.com" ;$template = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[news]]></MsgType><ArticleCount>5</ArticleCount><Articles><item><Title><![CDATA[%s]]></Title><Description><![CDATA[%s]]></Description><PicUrl><![CDATA[%s]]></PicUrl><Url><![CDATA[%s]]></Url></item><item><Title><![CDATA[%s]]></Title><Description><![CDATA[%s]]></Description><PicUrl><![CDATA[%s]]></PicUrl><Url><![CDATA[%s]]></Url></item><item><Title><![CDATA[%s]]></Title><Description><![CDATA[%s]]></Description><PicUrl><![CDATA[%s]]></PicUrl><Url><![CDATA[%s]]></Url></item><item><Title><![CDATA[%s]]></Title><Description><![CDATA[%s]]></Description><PicUrl><![CDATA[%s]]></PicUrl><Url><![CDATA[%s]]></Url></item><item><Title><![CDATA[%s]]></Title><Description><![CDATA[%s]]></Description><PicUrl><![CDATA[%s]]></PicUrl><Url><![CDATA[%s]]></Url></item></Articles></xml>" ;$info = sprintf($template,$toUser,$fromUser,$time,$title1,$description1,$picurl,$url,$title1,$description1,$picurl,$url,$title1,$description1,$picurl,$url,$title1,$description1,$picurl,$url,$title1,$description1,$picurl,$url) ;echo $info ;}if(strtolower($postObj->EventKey) == 'yuanchuangshuangwen2'){$title1 = "原创文章" ;$description1 = "半神半圣亦半仙 全儒全道是全贤 脑中真书藏万卷 掌握文武半边天" ;//图片链接  网络地址$picurl = "https://img4.mukewang.com/szimg/5aaa55850001a3ef10800600.jpg" ;//点击图文跳转的链接$url = "http://www.baidu.com" ;$template = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[news]]></MsgType><ArticleCount>5</ArticleCount><Articles><item><Title><![CDATA[%s]]></Title><Description><![CDATA[%s]]></Description><PicUrl><![CDATA[%s]]></PicUrl><Url><![CDATA[%s]]></Url></item><item><Title><![CDATA[%s]]></Title><Description><![CDATA[%s]]></Description><PicUrl><![CDATA[%s]]></PicUrl><Url><![CDATA[%s]]></Url></item><item><Title><![CDATA[%s]]></Title><Description><![CDATA[%s]]></Description><PicUrl><![CDATA[%s]]></PicUrl><Url><![CDATA[%s]]></Url></item><item><Title><![CDATA[%s]]></Title><Description><![CDATA[%s]]></Description><PicUrl><![CDATA[%s]]></PicUrl><Url><![CDATA[%s]]></Url></item><item><Title><![CDATA[%s]]></Title><Description><![CDATA[%s]]></Description><PicUrl><![CDATA[%s]]></PicUrl><Url><![CDATA[%s]]></Url></item></Articles></xml>" ;$info = sprintf($template,$toUser,$fromUser,$time,$title1,$description1,$picurl,$url,$title1,$description1,$picurl,$url,$title1,$description1,$picurl,$url,$title1,$description1,$picurl,$url,$title1,$description1,$picurl,$url) ;echo $info ;}}else{$type = 'text' ;$content = "世事如棋 乾坤莫测 笑尽英雄啊" ;//拼接 响应数据包模板 %s字符串类型占位 sprintf()$template = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><Content><![CDATA[%s]]></Content></xml>" ;//变量 依次替换字符串类型%s占位$info = sprintf($template,$toUser,$fromUser,$time,$type,$content) ;echo $info ;}}else if(strtolower($postObj->MsgType) == 'text'){$content = $postObj->Content ;//用户发送的内容 原样返回switch ($content) {case '1':$str = "猴头, 燕窝 ,鲨鱼翅" ;$template = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[%s]]></Content></xml>" ;$info = sprintf($template,$toUser,$fromUser,$time,$str) ;echo $info ;break;//带超链接的纯文本  点击文本跳转 case '2':$str = '<a href="https://blog.csdn.net/donglingjiu/article/details/81014313">查看资料</a>' ;$template = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[%s]]></Content></xml>" ;$info = sprintf($template,$toUser,$fromUser,$time,$str) ;echo $info ;break;  case '3':/*<xml><ToUserName>< ![CDATA[toUser] ]></ToUserName><FromUserName>< ![CDATA[fromUser] ]></FromUserName><CreateTime>12345678</CreateTime><MsgType>< ![CDATA[news] ]></MsgType><ArticleCount>2</ArticleCount><Articles><item><Title>< ![CDATA[title1] ]></Title> <Description>< ![CDATA[description1] ]></Description><PicUrl>< ![CDATA[picurl] ]></PicUrl><Url>< ![CDATA[url] ]></Url></item><item><Title>< ![CDATA[title] ]></Title><Description>< ![CDATA[description] ]></Description><PicUrl>< ![CDATA[picurl] ]></PicUrl><Url>< ![CDATA[url] ]></Url></item></Articles></xml>*/$title1 = "XXX图文1" ;$description1 = "半神半圣亦半仙 全儒全道是全贤 脑中真书藏万卷 掌握文武半边天" ;//图片链接  网络地址$picurl = "https://img4.mukewang.com/szimg/5aaa55850001a3ef10800600.jpg" ;//点击图文跳转的链接$url = "http://www.baidu.com" ;$template = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[news]]></MsgType><ArticleCount>1</ArticleCount><Articles><item><Title><![CDATA[%s]]></Title><Description><![CDATA[%s]]></Description><PicUrl><![CDATA[%s]]></PicUrl><Url><![CDATA[%s]]></Url></item></Articles></xml>" ;$info = sprintf($template,$toUser,$fromUser,$time,$title1,$description1,$picurl,$url) ;echo $info ;break ;case '4':$title1 = "XXX图文1" ;$description1 = "半神半圣亦半仙 全儒全道是全贤 脑中真书藏万卷 掌握文武半边天" ;//图片链接  网络地址$picurl = "https://img4.mukewang.com/szimg/5aaa55850001a3ef10800600.jpg" ;//点击图文跳转的链接$url = "http://www.baidu.com" ;$template = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[news]]></MsgType><ArticleCount>5</ArticleCount><Articles><item><Title><![CDATA[%s]]></Title><Description><![CDATA[%s]]></Description><PicUrl><![CDATA[%s]]></PicUrl><Url><![CDATA[%s]]></Url></item><item><Title><![CDATA[%s]]></Title><Description><![CDATA[%s]]></Description><PicUrl><![CDATA[%s]]></PicUrl><Url><![CDATA[%s]]></Url></item><item><Title><![CDATA[%s]]></Title><Description><![CDATA[%s]]></Description><PicUrl><![CDATA[%s]]></PicUrl><Url><![CDATA[%s]]></Url></item><item><Title><![CDATA[%s]]></Title><Description><![CDATA[%s]]></Description><PicUrl><![CDATA[%s]]></PicUrl><Url><![CDATA[%s]]></Url></item><item><Title><![CDATA[%s]]></Title><Description><![CDATA[%s]]></Description><PicUrl><![CDATA[%s]]></PicUrl><Url><![CDATA[%s]]></Url></item></Articles></xml>" ;$info = sprintf($template,$toUser,$fromUser,$time,$title1,$description1,$picurl,$url,$title1,$description1,$picurl,$url,$title1,$description1,$picurl,$url,$title1,$description1,$picurl,$url,$title1,$description1,$picurl,$url) ;echo $info ;break ;default :$str = '远看山有色 近停水无声 春去花还在 人来鸟不惊 ';$template = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[%s]]></Content></xml>" ;$info = sprintf($template,$toUser,$fromUser,$time,$str) ;echo $info ;break ;}}else{$str = '春眠不觉晓 '.'MediaId:'.$postObj->MediaId.' ThumbMediaId:'.$postObj->ThumbMediaId.' MsgId:'.$postObj->MsgId ;$template = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[%s]]></Content></xml>" ;$info = sprintf($template,$toUser,$fromUser,$time,$str) ;echo $info ;}}/*cURL简单的采集*/public function httpcURL() {  //初始化$curl = curl_init() ;//设置url$url = "https://www.imooc.com/" ;curl_setopt($curl, CURLOPT_URL, $url) ;curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1) ;//文件流形式返回//采集$output = curl_exec($curl) ;//关闭cURLcurl_close($curl) ;//echo $output ;file_put_contents('data.html', $output) ;}/*cURL获取access_token*/public function getAccessToken() {$appID = 'XXXXX' ;$appSecret = 'XXXXXXXXXXX' ;$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appID."&secret=".$appSecret ;//初始化 cURL$curl = curl_init() ;//设置参数curl_setopt($curl, CURLOPT_URL, $url) ;curl_setopt($curl,CURLOPT_RETURNTRANSFER,true) ;//采集数据 $output = curl_exec($curl) ;//关闭curl_close($curl) ;if(curl_errno($curl)) {var_dump(curl_errno($curl)) ;}//采集回来的json格式转换成数组$arr = json_decode($output,true) ;dump($arr) ;}/*获取微信服务器IP地址  做安全性验证 防止非微信服务器请求*/public function getWxServerIp() {//上述获取的access_token$access_token = '12_pA2wc_Mi44MY7LFSZSHsmka5Yg8wWP_WSkEXyWEMW0NjumZkrtVJ-vq1WxJU5kZGAhvFe08NdcK6h07QgDMkslx9r6wO7d61E4RV0Q4kw6ARv0DAqiucmpMmVzXlJqiXp2oYRjo2ceISjqa2UPLfADAFAW' ;$url = "https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=".$access_token ;//初始化 cURL$ch = curl_init() ;//设置参数curl_setopt($ch, CURLOPT_URL, $url) ;curl_setopt($ch,CURLOPT_RETURNTRANSFER,true) ;//采集数据 $output = curl_exec($ch) ;//关闭curl_close($ch) ;/* if(curl_errno($ch)) {var_dump(curl_errno($ch)) ;}*///采集回来的json格式转换成数组$arr = json_decode($output,true) ;dump($arr) ;$str = '' ;foreach ($arr as $key => $value) {$str .= implode($value,'||') ;}dump($str) ;file_put_contents('data.txt', $str) ;}/*返回当前天气*/public function getWether() {//初始化$curl = curl_init() ;//设置url$url = "http://wthrcdn.etouch.cn/weather_mini?city=".urlencode("深圳") ;echo $url ;curl_setopt($curl, CURLOPT_URL, $url) ;curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1) ;//文件流形式返回//采集$output = curl_exec($curl) ;//关闭cURLcurl_close($curl) ;// echo $output ;  $arr = json_decode($output,true) ;var_dump($arr) ;}/*cURL可能是get|post$url 接口URL string$type 请求类型 string$res 返回数据类型 string $arr post请求参数 string */public function http_curl($url,$type='get',$res='json',$arr='') {//初始化$curl = curl_init() ;//设置curl参数curl_setopt($curl, CURLOPT_URL, $url) ;curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1) ;//文件流形式返回if($type == 'post') {curl_setopt($curl, CURLOPT_POST, true) ;curl_setopt($curl, CURLOPT_POSTFIELDS, $arr) ;}//采集$output = curl_exec($curl) ;//关闭cURLcurl_close($curl) ;if($res == 'json') {/*if(curl_errno($curl)) {//请求失败 返回错误信息return curl_error($curl) ;}else{//请求成功  返回数组格式return json_decode($output,true) ;}*/return json_decode($output,true) ;}}/*将access_token存到session中  设置过期时间*/public function getSessionAccessToken() {// 如果 session中存有 access_token 并且未超过有效期 使用session中的access_tokenif(session('access_token') && session('expire_time') > time()) {return  session('access_token') ;}else{//第一次获取 或者已经超时  重新获取access_token $appID = 'XXXXXX' ;$appSecret = 'XXXXXXXXXX' ;//get请求方式$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appID."&secret=".$appSecret ;$res = $this->http_curl($url,'get','json') ;$access_token = $res['access_token'] ;//将获取到的access_token存到session 设置过期时间session('access_token',$access_token) ;session('expire_time',time() + 7000 ) ;// SESSION['access_token'] = $access_token ;// SESSION['expire_time'] = time() + 7000 ;return $access_token ;}}/*自定义菜单*/public function definedItem() {header("content-type:text/html;charset=utf-8") ;//接口   post请求$access_token = $this->getSessionAccessToken() ;$url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$access_token ;//自定义菜单数据$data = array() ;$data["button"] = array(array('name'=>"今天吃啥",'sub_button'=>array(array("type"=>"click","name"=>"推荐菜品","key"=>"tuijiancai") ,array("type"=>"view","name"=>"美团一下","url"=>"http://i.meituan.com") ,array("type"=>"view","name"=>"饿了吗来一份","url"=>"https://h5.ele.me") ,array("type"=>"scancode_push","name"=>"扫码推送",/*草料二维码 生成静态二维码  扫码之后跳转二维码 apihttp://qr.liantu.com/api.php?text=页面引用<img src="http://qr.liantu.com/api.php?text=x"/>进行引用text=可以是连接  http://www.baidu.com 可以是文字等*/"key"=>"saomatuisong") ) ) ,array('name'=>"原创专栏",'sub_button'=>array(array("type"=>"scancode_waitmsg","name"=>"扫码带提示","key"=>"saomadaitishi") ,array("type"=>"pic_sysphoto","name"=>"系统拍照发图","key"=>"xitongpaizhaofatu") ,array("type"=>"click","name"=>"原创爽文1","key"=>"yuanchuangshuangwen1") ,array("type"=>"click","name"=>"原创爽文2","key"=>"yuanchuangshuangwen2") ,array("type"=>"pic_photo_or_album","name"=>"拍照或者相册发图","key"=>"paizhaohuozhexiangce") ) ) ,array('name'=>"联系我们",'sub_button'=>array(array("type"=>"pic_weixin","name"=>"微信相册发图","key"=>"weixinxiangcefatu") ,array("type"=>"location_select","name"=>"发送位置","key"=>"fasongweizhi") ,) ) ) ;//汉字不转义$postJson = json_encode($data,JSON_UNESCAPED_UNICODE) ;//cURL post请求$res = $this->http_curl($url,'post','json',$postJson) ;var_dump($res) ;}/*删除自定义菜单*/public function clearItem() {//获取access_token$access_token = $this->getSessionAccessToken() ;//get请求$url = "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=".$access_token  ;//cURL$res = $this->http_curl($url,'get','json') ;var_dump($res) ;}}

PHP实现微信公众平台开发---提升篇(access_token存session)相关推荐

  1. PHP实现微信公众平台开发---提升篇(上传素材并回复)

    一.HTTP接收事件订阅与恢复响应消息 i. 接收事件推送 并回复 1. 无连接:当用户关注微信公众账号的时候  微信公众平台会向我们推送post请求  关注推送的并不是数组  而是XML 2. 接收 ...

  2. PHP实现微信公众平台开发---提升篇(网页授权接口)

    网页授权接口(类似于浏览器通过cookie|session标识客户 微信端通过openid标识) 接口类型(通过网页授权 获取openid) snsapi_base:基本类型 静默授权并自动跳转到回调 ...

  3. 微信公众平台开发 - 动手篇。使用weinxinFundation开始一个微信公众平台的开发

    本文主要讲解如何使用 weinxinFundation 进行二次开发. 步骤如下: 1.创建新的web项目. 在eclipse里新建一个dynamicly web project,比如本文叫weixi ...

  4. PHP微信公众平台开发高级篇—生成二维码接口

    一.说明 1.这里讲解生成二维码接口(临时二维码和永久二维码) 2.这里给出简单的实现代码,不做详细说明 3.可以参考开发手册: https://mp.weixin.qq.com/wiki?t=res ...

  5. 微信公众平台开发 进入篇(Web App开发入门)

    WebApp与Native App有何区别呢? Native App: 1.开发成本非常大.一般使用的开发语言为Java.C++.Objective-C. 2.更新体验较差.同时也比较麻烦.每一次发布 ...

  6. 微信公众平台开发——问题篇

    2019独角兽企业重金招聘Python工程师标准>>> 1. 我该在哪里写开发代码:      在你url中的index.php中编写所有代码.无论是自定义菜单还是自动回复消息    ...

  7. PHP微信公众平台开发高级篇--群发接口

    群发消息接口 订阅号:每天一条的群发权限 服务号:每月(自然月)4条群发权限 实例 <?php /*** 群发接口* PS:群发之前调用"预览接口"进行测试* PS:通过第三 ...

  8. PHP微信公众平台开发高级篇--生成二维码接口

    临时二维码 实例 临时二维码 <?php /*** 生成二维码接口* 文档地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id= ...

  9. 微信公众平台开发教程(八)Session处理

    在微信窗口,输入的信息有限,我们需要将一些信息分多次请求. 比如:在进行用户绑定时,我们需要输入用户的相关信息,比如:用户名.密码,或者姓名.电话号码,服务端验证通过,即可将系统用户与微信用户绑定. ...

  10. 微信公php开发视频,PHP实现微信公众平台开发 全套视频资源下载

    好久没有更新东西了,今天给大家分享一份比较不错的视频学习资源吧. 主要是关于PHP实现微信公众平台开发, 不知道大家对于微信平台的开发有多少了解,那么今天就从基础开始吧,资源目录如下(PS :适各自的 ...

最新文章

  1. 芯片内亿万的晶体管制程工艺
  2. linux扩文件系统大小,调整卷大小后扩展 Linux 文件系统 - Amazon Elastic Compute Cloud...
  3. ssh客户端_Mobaxterm-不止是一款好用的SSH客户端软件
  4. android 解决java.nio.BufferOverflowException 异常
  5. cmd 中 net start mysql 提示发生系统错误 5
  6. oracle 导库时日志满了,oracle rac 11g 日志占满系统盘导致数据库down掉
  7. c语言修改windows系统时间,c语言实现系统时间校正工具代码分享
  8. 车是银色好还是白色好?
  9. 数字图像处理(六)——Matlab实现频域图像分析、FFT实现4:1的图像压缩
  10. 联想笔记本电脑(LENOVO)关闭触摸板
  11. HDMI中的视频时序分析
  12. 零基础可不可以学前端?我来告诉你
  13. 如何制作APP-微信小程序
  14. 大话赛宁云 | 演系列-超仿真网络空间“演武场”
  15. 二分图(染色法+匈牙利法)学习笔记
  16. MySQL优化和集群
  17. Tomcat 环境变量
  18. SAP ABAP性能优化 - 调优工具 SM50 | ST05 | SAT
  19. TS 如何解决已声明“XXX”,但从未读取其值
  20. Android开发者跳槽必备:写给程序员的Flutter详细教程,大厂直通车!

热门文章

  1. 【从嵌入式视角学习香山处理器】一、如何开始?(开发环境搭建)
  2. 《编程之美》买书问题及c语言代码实现
  3. linux怎样安装麒麟双系统,win10系统装麒麟系统双系统的具体办法
  4. 使用数字万用表来检测电子元器件的时候需注意的几点
  5. Provisional headers are shown axios 超时处理
  6. Oracle12C日志出现error=904怎样解决
  7. windows常用快捷命令大全总结
  8. 【iOS】快捷指令下载动漫屋漫画
  9. 蛋白质降解技术中常用的蛋白酶(一)
  10. 电子技术基础(三)_第4章直流稳压电源__集成稳压器