微信公众平台自定义菜单开发示例

 更新时间:2016年11月25日 17:26  点击:1737
微信公众平台推出一自定义菜单功能,我们可以简单的直接在后台编辑自定义菜单,也可以利用api来设置菜单,下面我来介绍一下操作方法

 腾讯微信3月19日正式公布公众平台自定义菜单功能。目前该功能仅提供给企业和机构,且内测资格需要申请。对于这一新增功能,目前仅有少数账号已经开通。至此,微信的商业化价值被进一步挖掘出来。

 

微信公众平台推出自定义菜单功能

 

   开发者可利用该功能为公众账号的会话界面底部增加自定义菜单。用户点击菜单中的选项,可以调出相应的回复信息或网页链接。

菜单创建
接口说明
通过POST一个特定结构体,实现在微信客户端创建自定义菜单。
请求说明
http请求方式:POST

https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN

结构体其实就是一个json格式的字符串,相信很多朋友就卡在这里了,怎么往这个接口地址 post 一个结构体呢,实现代码如下:

 代码如下 复制代码

public static void main(String[] args) throws Exception {
    URL url = new URL("https://api.weixin.qq.com/cgi-bin
                                 /menu/create?access_token=TOKEN");
        String responeJsonStr = "{"+
                                     ""button":["+
                                     "{"name":"酒店预订","+
                                     ""sub_button":["+
                             "{"+
                                ""type":"click","+
                                ""name":"附近酒店","+
                                ""key":"jintoneinn488878-1""+
                            "},"+
                            "{"+
                                ""type":"click","+
                                ""name":"查找酒店","+
                                ""key":"jintoneinn488878-2""+
                            "}"+
                        "]"+
                    "}"
                "]"+
            "}";
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("POST");
        conn.setDoOutput(true);
        conn.connect();
        conn.getOutputStream().write(responeJsonStr.getBytes("utf-8"));
        InputStream is = conn.getInputStream();
        BufferedReader in = new BufferedReader(new InputStreamReader(is,"utf-8"));
        StringBuffer buffer = new StringBuffer();
        String line = "";
        while ((line = in.readLine()) != null) {
            buffer.append(line);
        }
        System.out.println(buffer.toString()); 
    }


菜单查询
接口说明

查询当前使用的自定义菜单结构。

请求说明

http请求方式:GET

https://api.weixin.qq.com/cgi-bin/menu/get?access_token=ACCESS_TOKEN
返回说明

对应创建接口,正确的Json返回结果:

 代码如下 复制代码

{"menu":{"button":[{"type":"click","name":"今日歌曲","key":"V1001_TODAY_MUSIC","sub_button":[]},{"type":"click","name":"歌手简介","key":"V1001_TODAY_SINGER","sub_button":[]},{"name":"菜单","sub_button":[{"type":"click","name":"hello word","key":"V1001_HELLO_WORLD","sub_button":[]},{"type":"click","name":"赞一下我们","key":"V1001_GOOD","sub_button":[]}]}]}}


菜单删除
接口说明

取消当前使用的自定义菜单。

请求说明

http请求方式:GET
https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=ACCESS_TOKEN
返回说明

对应创建接口,正确的Json返回结果:

 代码如下 复制代码
{"errcode":0,"errmsg":"ok"}

 

我们这里介绍的是在数组中再增加关联数组了,这个就合成了多维数组,下面我来给大家举几个实例,希望对各位同学会有所帮助哈。

在"php 数组添加元素方法总结这篇文章中介绍了如何给数组添加元素,那么我想添加$array=array('title'=>'php教程')这样的元素怎么办呢。

array_push, array_pop, array_shift, array_unshift 这几个函数都是为数字类型的索引数组设计的。
要想实现关联数组的添加可以使用array_merge方法或者是+操作符

我们先来看数组中增加数组元素

1. php中增加数组元素的方法:

(1)通过赋值增加数组元素 :$states[‘name’]=’Tom’;

(2)int array_push(array target_array,mixed variable [,mixed variable…]) 函数将variable增加到target_array的末尾,成功时返回true,否则返回false,其中variable可以是多个。

(3)int array_unshift(array target_array,mixed variable [,mixed variable…]) 函数将variable增加到target_array的数组头,成功时返回true,否则返回false,其中variable可以是多个。所有已有的数值键都会相应地修改,而关联键不受影响。

(4)array array_pad(array target_array,integer length,mixed pad_value) 将target_array 的大小增加到length指定的长度。

使用array_push或者array_unshift这两个方法行么?

答案是否定的


具体方法:

1.使用array_merge方法实现类似array_unshift在开头添加元素的功能

 代码如下 复制代码

<?php
$queue = array('a', 'B');
$queue = array_merge(array('front' => 'hello'), $queue);
/*
Array
(
    [front] => hello
    [0] => a
    [1] => b
)
*/
?>

2.+操作符

 代码如下 复制代码

<?php
$queue = array('a', 'B');
$queue = array('front' => 'Hello') + $queue;
?>

输出结果与使用array_merge方法一样。

3.在元素结尾添加关联数组元素

 代码如下 复制代码

<?php
$queue = array('a', 'B');
$queue['front'] = 'hello';
/*
输出
Array
(
    [0] => a
    [1] => b
    [front] => hello 
)
*/
?>

CPanel面板是一款非常强大的虚拟主机管理面板了,如果你是空间商估计这个cp面板你不陌生哦,下面我来介绍利用php实现自动备份网站文件.

 

 代码如下 复制代码
<?php
// PHP script to allow periodic cPanel backups automatically.
// Based on script posted by max.hedroom in cpanel.net forums
// This script contains passwords. KEEP ACCESS TO THIS FILE SECURE!
 
// ********* 下面项目需要设定 *********
 
// cPanel登录信息
$cpuser = "**"; // CPanel帐号
$cppass = "***"; // CPanel密码
$domain = "***"; // cPanel所在域名或IP
$skin = "x3"; // 正在使用的cPanel风格,默认"x3"。
 
 
/************** 备份目的地 ***************
"homedir" - 本地主目录
"ftp" - 远程FTP备份(主动模式)
"passiveftp" - 远程FTP备份(被动模式)
"scp" - 加密传输(需服务器支持)
****************************************/
$savedir = "ftp"; // 备份目的地,默认"homedir",即只做本地备份。
 
// FTP上传的信息(备份目的地为本地的,可不填)
 
$ftpuser = "***"; // FTP帐号
$ftppass = "***!"; // FTP密码
$ftphost = "***"; // FTP服务器IP
$ftpport = "21"; // FTP端口,默认21
$ftprdir = "/"; // 远程FTP目录,默认"/"
 
// 通知信息
$notifyemail = "**@gmail.com"; // 信息反馈邮件地址
 
// 安全模式
$secure = 1; // 0为标准http, 1为ssl(需要主机支持ssl)
 
// 设定值为1时会在排程记录中产生网页报告
$debug = 0;
 
// *********** 以下内容不要更改! *********
 
if ($secure) {
   $url = "ssl://".$domain;
   $port = 2083;
} else {
   $url = $domain;
   $port = 2082;
}
 
$socket = fsockopen($url,$port);
if (!$socket) { echo "Failed to open socket connection... Bailing out!n"; exit; }
 
// Encode authentication string
$authstr = $cpuser.":".$cppass;
$pass = base64_encode($authstr);
 
$params = "dest=$savedir&email=$notifyemail&server=$ftphost&user=$ftpuser&pass=$ftppass&port=$ftpport&rdir=$ftprdir&submit=Generate Backup";
 
// Make POST to cPanel
fputs($socket,"POST /frontend/".$skin."/backup/dofullbackup.html?".$params." HTTP/1.0rn");
fputs($socket,"Host: $domainrn");
fputs($socket,"Authorization: Basic $passrn");
fputs($socket,"Connection: Closern");
fputs($socket,"rn");
 
// Grab response even if we don't do anything with it.
while (!feof($socket)) {


以上代码复制保存为: fullbackup.php文件,上传到public_html以外的目录

这个全局脚本包含cPanel的登录帐号和密码,为了安全考虑,需要将这个脚本放到public_html文件夹以外的文件夹中,比如:“/home/yourname/backup”,并设置该文件夹的权限为600。切记!

2.填写好相关信息,修改文件名为fullbackup.php
3.将上述脚本上传到“/home/yourdomain/beifen”目录。(没有可以新建beifen目录)
4.将beifen目录的权限改为600
5.打开cpanel面板的时钟守护作业(Cron Jobs)。

选择作业频率,在command栏输入

 代码如下 复制代码

1 /usr/bin/php -q /home/yourname/backup/fullbackup.php

怎么调用ckeditor呢,下面小编来给大家总结一处利用php 调用ckeditor编辑器与js调用ckeditor的方法吧,其它脚本调用方法大致一样了。

PHP调用FCKeditor 

将FCKeditor放在网站根目录
在PHP文件里面,包含/FCKeditor/ckeditor/" target="_blank">fckeditor.php文件

在网页中需要放置该编辑器的地方插入下面代码即可调用:

 代码如下 复制代码
   <?php
    //包含fckeditor类
    include("fckeditor/fckeditor.php") ;
    //创建一个FCKeditor,表单名称为 jzleditor
    $oFCKeditor = new FCKeditor("jzleditor");
    //设置编辑器路径
    $oFCKeditor->BasePath = "fckeditor/";
    $oFCKeditor->ToolbarSet = "Default";//工具按钮
    $oFCKeditor->Value =$cont; //;设置初始内容
    $oFCKeditor->Width="100%"; //设置它的宽度
    $oFCKeditor->Height="550px"; //设置它的高度
    $oFCKeditor->Create();
   ?>

输入内容,提交后,在处理的文件中通过$_POST["jzleditor"]来取得输入的内容

js调用FCKeditor 

CKEDITOR的使用很简单,先download CKEDITOR 3.6.1(默认是PHP版的),然后在调用页面的head中,写下如下两段js:

 代码如下 复制代码

<script type="text/javascript" src="ckeditor/ckeditor.js"></script>
<script type="text/javascript">                                                                    window.onload = function()
        {
         CKEDITOR.replace( "content" );
        };

</script>

注意:这里的content是<textarea>的名称,如下所示:

<textarea name="content">ddd</textarea>如果是3.6.2版本,该语句可能要写成:

<textarea name="content" class="ckeditor">ddd</textarea>

版本差异造成的问题,请大家在运行时注意这个问题。

在下一个页面根据name值content获取相应的值

下面我来给大家介绍在php中操作excel两个实例,一个是利用PHP-ExcelReader导入excel并输出,另一种是直接输入excel并导出,下面看实例。


借助PHP-ExcelReader这个开源类,我们可以轻松地导入Excel文件数据,示例代码如下:

PHP-ExcelReader下载地址:http://sourceforge.net/projects/phpexcelreader/

例.导入Excel文件

 代码如下 复制代码

<?php
require_once 'Excel/reader.php';
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('gbk');
$data->read('test.xls');
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
    for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {
        echo """.$data->sheets[0]['cells'][$i][$j]."",";
    }
    echo "n";
}
?>

例.phpexcel导到excel

1.    test.php

 代码如下 复制代码

require_once 'reader.php';

// ExcelFile($filename, $encoding);
$data = new Spreadsheet_Excel_Reader();

// Set output Encoding.
$data->setOutputEncoding('gbk');

//”data.xls”是指要导入到mysql中的excel文件
$data->read('data.xls');

@ $db = mysql_connect('localhost', 'root', '123456') or
       die("Could not connect to database.");//连接数据库
mysql_query("set names 'gbk'");//输出中文
mysql_select_db('mydb');       //选择数据库
error_reporting(E_ALL ^ E_NOTICE);

for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
//以下注释的for循环打印excel表数据
/*
for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {
            echo """.$data->sheets[0]['cells'][$i][$j]."",";
           }
           echo "n";
//PHP开源代码


*/
//以下代码是将excel表数据【3个字段】插入到mysql中,根据你的excel表字段的多少,改写以下代码吧!
    $sql = "INSERT INTO test VALUES('".
               $data->sheets[0]['cells'][$i][1]."','".
                 $data->sheets[0]['cells'][$i][2]."','".
                 $data->sheets[0]['cells'][$i][3]."')";
    echo $sql.'
';
       $res = mysql_query($sql);
}

?>

例.导出excel文件


比如我需要一个做php导出 excel的的程序,只需要把相关的数据导出到excel表就可以了,这么简单的操作就不需要用那些类库什么的了。直接用header的方式就可以了:header("Content-type:application/vnd.ms-excel");

看看代码:

 代码如下 复制代码

<?php
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:attachment;filename=Export_test.xls");
$tab="t"; $br="n";
$head="编号".$tab."备注".$br;
//输出内容如下: 
echo $head.$br;
echo  "test321318312".$tab; 
echo  "string1";
echo  $br;

echo  "330181199006061234".$tab;  //直接输出会被Excel识别为数字类型
echo  "number";
echo  $br;

echo  "="330181199006061234"".$tab;  //原样输出需要处理
echo  "string2";
echo  $br;
?>

在导出后会发现一个问题,如果数据是数字会出现一些意想不到的情况。比如,"012345",在excel中会变成"12345";如果输入身份证号码这样的长数字,在excel中会用科学计数法表示出来,并且最后的四位数字会出现偏差,变位0000等情况。这就需要把单元格设置为文本格式,方法是
echo  "="330181199006061234""如果程序是utf-8编码的,还需要用iconv函数去转码,不然是会乱码的,乱码的。

另word格式导入类似,,指定header就可以了:

 代码如下 复制代码

header("Content-Type:   application/msword");       
header("Content-Disposition:   attachment;   filename=doc.doc"); 

[!--infotagslink--]

相关文章

  • 微信公众平台实现微信网页登陆授权开发

    微信公众平台实现微信网页登陆授权开发其实是非常的简单了,因为官方的参考程序了,下面小编就看了一站长根据官方参考做的一个网页登陆授权例子,大家可看看。 文件1:in...2016-11-25
  • PHP Curl模拟登录微信公众平台、新浪微博实例代码

    这篇文章主要介绍了PHP Curl模拟登录微信公众平台、新浪微博实例代码的相关资料,涉及到php curl模拟登录相关知识,需要的朋友可以参考下...2016-02-01
  • php版本微信公众平台回复乱码问题解决方法

    微信公众平开发时碰到回复中文乱码了,这个问题小编发现是编码问题,其实只要把编码转成utf8就可以解决了,具体来看看。 很多微信公众平台的自动回复程序都是 ThinkWec...2016-11-25
  • 微信公众平台开发通过php创建自定义菜单

    自定义菜单可以在后台设置但如果你使用了开发者之后那么后台的自定义菜单功能就失效了,必须通过程序来创建了,下面一起来看一个简单的通过php创建自定义菜单的例子。...2016-11-25
  • php版微信公众平台账号自定义菜单类

    微信公众平台服务号可申请自定义菜单了,其它的号暂时不支持自定义菜单了,这个不但可以使用api来操作,还可以直接在后台定义菜单与参数哦。 申请自定义菜单 服务号可...2016-11-25
  • php 微信公众平台开发之验证步骤

    微信公众平台开发我们现在做得比较多了,下面给各位介绍的是一个入门级别的微信公众平台验证基础知识了,有兴趣的和小编来看看。 开发微信的时候 需要验证一下 。...2016-11-25
  • 微信公众平台模拟登录之验证码获取

    最近在模拟登录的时候愈发的出现登录失败的情况,原因是:微信公众平台登录如果时不时的会对一些异常帐号要求输入验证码才可以登录 这个时候平台首页的登录逻辑就会...2016-11-25
  • 微信公众平台开发入门教程

    要对微信公众平台进行开发,首先需要成为开发者,可以到https://mp.weixin.qq.com/注册一个帐号,然后按要求填写相关信息即可。 有了公众号后,在公众平台的高级功能里选...2016-11-25
  • 微信公众平台开发之自定义菜单.Net代码解析

    这篇文章主要为大家详细解析了微信公众平台开发之自定义菜单.Net代码,感兴趣的小伙伴们可以参考一下...2021-09-22
  • 使用c#开发公众平台自定义菜单功能

    微信公众平台服务号开放了自定义菜单API,本案例介绍C#开发微信公众号自定义菜单功能。在此基础上可以开发更完善的自定义菜单管理功能...2020-06-25
  • 微信公众平台预约提交后发送email例子

    其实这种发送邮件是非常的简单了我们只要接受由用户提交过来的邮箱地址然后再由php的邮件控制进行邮件发送了,下面看一个综合开发例子。 首先yyuc框架是支持发送em...2016-11-25
  • 微信公众平台PHP开发版本例子

    微信公众平台现在有许多的api接口了我们可以利用微信公众平台来实现许多的一些功能,下面来看一个php版本的微信公众平台开发实例。 最近在做微信公众平台开发,一口...2016-11-25
  • 微信公众平台开发关注/取消关注事件例子

    用户在关注与取消关注公众号时,微信会把这个事件推送到开发者填写的URL。方便开发者给用户下发欢迎消息或者做帐号的解绑 下面是一个微信公众平台关注和取消关注的...2016-11-25
  • wordpress主题支持自定义菜单及修改css样式实现方法

    使用wordpress过程中会遇到主题支持自定义菜单以及修改css样式问题,本文将介绍详细解决方法,需要朋友可以参考下...2020-06-30
  • 微信自定义菜单的创建/查询/取消php示例代码

    这篇文章主要为大家详细介绍了微信自定义菜单的创建查询取消php示例代码,感兴趣的小伙伴们可以参考一下...2016-08-27
  • 微信公众平台网页获取用户OpenID方法

    下面我们一起来看看关于微信公众平台网页获取用户OpenID方法,有需要了解的朋友可以一起来看看吧. 用户点击微信自定义菜单view类型按钮后,微信客户端将会打开开发者...2016-11-25
  • 分析微信公众平台“接收普通消息”相关数据的获取

    在微信公众平台中,有一个接收普通消息的接口,关注公众号之后,每回复一条信息,都会post到开发中心填写的地址上面去。 接收普通消息在官方开发文档中截图如下: 上面的...2016-05-19
  • 微信公众平台之CURL应用

    本文章来给各位同学介绍一下关于微信公众平台之CURL应用实例,如果你碰到此类问题不防进入参考一下吧。 这几天工作有大量用curl,curl就是模拟浏览器来传输数据,他支...2016-11-25
  • 微信公众平台智能机器人PHP开发示例

    现在使用微信公众平台的商家越来越多了,微信公众平台为我提供了大量api接口他可以实现与我们网站数据对接,然后用户输入内容自动回复相关信息,下面我来介绍微信公众平台...2016-11-25
  • 微信公众平台开发自定义菜单的教程

    微信公众平台开发自定义菜单功能打开非常的简单只需要在微信网站后台进行一些简单的设置即可,具体来给各位演示一下。 一、自定义菜单概述 自定义菜单能够帮助公众...2016-11-25