微信公众平台的开发接口简单例子
这段时间都在忙于微信公众号平台来发,现在已经接近尾声了,所以对于微信开发平台的接口如何使用,在这里也唠刀一两句。
微信平台的开发并不像你想像的那么难,无非就是数据的存取处理罢了。对于数据的存取,简单如留言板,存数据,我们通过表单向数据库提交数据以存入;取数据,通过查询语句从数据库取得。对于数据的存取,微信公众平台开放了各式各样的接口以满足不同类型的数据存取,这样,我们就可以通过接口间接地向微信公众平台的数据库存取数据了。
先来看一个创建菜单的接口
https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN
这个接口目前需要服务号才有权限,但是没有服务号的可以申请一个测试号(有限期一年)来测试。接口中的ACCESS_TOKEN是通过公众号(服务号或测试号)的AppID和AppSecret来获取,每个可以存取数据的接口都需要ACCESS_TOKEN。
接口是有了,但是怎么使用它来存取微信公众平台的数据呢?可以使用下面这个函数来调用:
代码如下 | 复制代码 |
function https_request($url,$data = null){ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); if (!empty($data)){ curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); } curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($curl); curl_close($curl); return $output; } |
说明:这是一个php函数,$url是微信公众号的接口,$data是一个json格式的数据
使用方法:
取数据:https_request($url);
存数据:https_request($url,$data);
小结:在取数据时,https_request函数返回的是json格式的数据。存数据之前,如果$data不是json格式的,需要转化为json数据。
检测返回的数据是不是json格式的数据我们可以使用几个方法来判断,下面我整理了一些比较实用的检测json字符串是不是json格式的例子,希望例子能帮助各位带来帮助哦。首先要记住json_encode返回的是字符串, 而json_decode返回的是对象.
判断数据不是JSON格式:
代码如下 | 复制代码 |
function is_not_json($str){ |
判断数据是合法的json数据: (PHP版本大于5.3)
代码如下 | 复制代码 |
function is_json($string) { json_decode($string); return (json_last_error() == JSON_ERROR_NONE); } json_last_error()函数返回数据编解码过程中发生的错误. |
注意: json编解码所操作字符串必须是UTF8的.
如果不是json则返回false
代码如下 | 复制代码 |
|
上面的几种方法都可以检测来是不是json数据,当然我还有一个另类的做法就是使用ajax来实现,例子如下
使用 AJAX 请求来获得 JSON 数据,并输出结果:
代码如下 | 复制代码 |
$.getJSON("test.js", function(json){ |
如果返回的值不正确就是不合法的json字符串了,是不是这样也可以呀。
认识几个做视频网站的站长他们的视频电影都是来自于我们国内的几大视频网站了,有一站长要我帮助它做一个可以自动测试出youku视频网站的flv真实地址,下面我整理了一下午解决了此问题非常的不错,大家可参考一下。这个是借力打力,只是抓去朋友网的内容!!!
不过相当好用哦!
看代码:
代码如下 | 复制代码 |
<?php |
这个测试出来的只是swf文件并不是我们要的flv文件了,后来参考一站长的写法进行了改进
核心代码:
代码如下 | 复制代码 |
<?php function fetch_youku_flv($url){ preg_match("#id_(.*?).html#",$url,$out); $id=$out[1]; $content=get_curl_contents('http://v.youku.com/player/getPlayList/VideoIDS/'.$id); $data=json_decode($content); foreach($data->data[0]->streamfileids AS $k=>$v){ $sid=getSid(); $fileid=getfileid($v,$data->data[0]->seed); $one=($data->data[0]->segs->$k); if($k == 'flv' || $k == 'mp4') return "http://f.youku.com/player/getFlvPath/sid/{$sid}_00/st/{$k}/fileid/{$fileid}?K={$one[0]->k}"; continue; } } function get_curl_contents($url, $second = 5){ if(!function_exists('curl_init')) die('php.ini未开启php_curl.dll'); $c = curl_init(); curl_setopt($c,CURLOPT_URL,$url); $UserAgent=$_SERVER['HTTP_USER_AGENT']; curl_setopt($c,CURLOPT_USERAGENT,$UserAgent); curl_setopt($c,CURLOPT_HEADER,0); curl_setopt($c,CURLOPT_TIMEOUT,$second); curl_setopt($c,CURLOPT_RETURNTRANSFER, true); $cnt = curl_exec($c); $cnt=mb_check_encoding($cnt,'utf-8')?iconv('gbk','utf-8//IGNORE',$cnt):$cnt; //字符编码转换 curl_close($c); return $cnt; } function getSid() { $sid = time().(rand(0,9000)+10000); return $sid; } function getkey($key1,$key2){ $a = hexdec($key1); $b = $a ^ 0xA55AA5A5; $b = dechex($b); return $key2.$b; } function getfileid($fileId,$seed) { $mixed = getMixString($seed); $ids = explode("*",$fileId); unset($ids[count($ids)-1]); $realId = ""; for ($i=0;$i < count($ids);++$i) { $idx = $ids[$i]; $realId .= substr($mixed,$idx,1); } return $realId; } function getMixString($seed) { $mixed = ""; $source = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/:._-1234567890"; $len = strlen($source); for($i=0;$i< $len;++$i){ $seed = ($seed * 211 + 30031) % 65536; $index = ($seed / 65536 * strlen($source)); $c = substr($source,$index,1); $mixed .= $c; $source = str_replace($c, "",$source); } return $mixed; } |
调用方法:
代码如下 | 复制代码 |
|
访问: http://xiaomizhou.net/demo/flv.php?url=http://v.youku.com/v_show/id_XMzg2OTQ3MjQw.html
输出的结果是:http://f.youku.com/player/getFlvPath/sid/138035737110468_00/st/flv/fileid/03000201004F97EF4A2E350467A09DB266E872-5522-225F-DC45-40B4E1F9BE49?K=c2a4327df2bb5a65261d40ea
这个是可以直接下载的!!
今天没事在研究一个功能但会用到strtotime函数了,这个我是把2014-07-8 0:0:0格式的转换时间戳了,这个例子非常的好用,下面来看个例子吧。实现功能
获取当半时间与用户给定的时间进行对比,然后判断是几天之内进行相关操作了
程序代码
代码如下 | 复制代码 |
<?php $d ='2014-01-09'; echo $ftime; echo date('Y-m-d',$ftime).'<br />'; if( round(($time - $ftime) / 86500,1)< 7 ) // 7天之内不允许复制 |
一聚教程网应用于一些比较简单的内容处理上了,在此我就不说出来了免得大得进行攻击我的网哦哈。
这个原理比较的简单就是用户第一次提交时我们记录提交用户的IP地址,这样如果用户在固定时间内再次提交表单就会提示重复提交了,这种做法通常用于在顶一下,支持一下这种应用中了,在防止数据重复提交是一个非常不好的选择哦。例子
代码如下 | 复制代码 |
<?php session_start(); |
还有办法就是
1:在页面生成随机码,也就是每次提交随机码都不一样,在提交的时候验证随机码!
2:在提交的时候,验证如果数据存在,就不提交了.
如果你想防止重复提交入库IP不是最好的办法,我们可以在数据库中查询是不是有相同记录并且IP是不是想同再进行处理,
例子
代码如下 | 复制代码 |
$sql ="select * from 表名 where buy_tel='电话' and IP='$ip' ";// and $time-buy_date<60 |
相关文章
- 这篇文章主要介绍了c# 三种方法调用WebService接口的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-07
- 这篇文章主要介绍了vue接口请求加密实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-12
- 这篇文章主要介绍了C#简单了解接口(Interface)使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-12-08
- 这篇文章主要介绍了SpringBoot接口接收json参数解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-10-19
- 这篇文章主要介绍了C# Rx的主要接口深入理解的相关资料,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了Feign接口方法返回值设置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-07-08
- 这篇文章主要介绍了vue设置全局访问接口API地址操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-14
- 在日常开发中,总会接触到各种接口,前后端数据传输接口,第三方业务平台接口,下面这篇文章主要给大家介绍了关于如何设计一个安全的API接口的相关资料,需要的朋友可以参考下...2021-08-12
- php怎么写api接口?本文介绍了php写api接口的实例代码,有兴趣的同学可以参考一下。 http://localhost/openUser.php?act=get_user_list&type=json在这里openUser.php...2017-07-06
- 这篇文章主要介绍了vue配置多代理服务接口地址操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-09-08
- 下面通过四步给大家介绍了c#处理和对接http接口请求的方法,分步骤介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起看下吧...2020-06-25
- 这篇文章主要介绍了Java接口DAO模式代码原理及应用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-03
- 这篇文章主要介绍了C#实现两接口中同名方法,涉及C#接口与方法的相关操作技巧,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了c#接口使用的实例,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-17
- 这篇文章主要介绍了SpringData Repository接口用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-08-27
- 这篇文章主要介绍了微信小程序通过api接口将json数据展现到小程序示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2017-01-23
- 这篇文章主要介绍了详解c# 接口IDisposable的用法,帮助大家更好的理解和学习c#,感兴趣的朋友可以了解下...2020-12-08
- restful接口常用的两种方式是get和post.接下来通过本文给大家介绍Restful接口的两种使用方式,本文给大家介绍的非常详细,需要的朋友参考下吧...2020-06-25
- 最近,在做测试开发平台的时候,需要对测试用例的列表进行后端分页,在实际去写代码和测试的过程中,发现这里面还是有些细节的,故想复盘一下...2021-09-29
- 这篇文章主要介绍了vue 接口请求地址前缀本地开发和线上开发设置方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-13