微信开发常用接口的PHP封装

微信接口这块的东西不是弄起来不算特别难,封装好了基本都能复用,不过没做过微信开发的同学第一次整起来还是显得有些蛋疼的。

常用的开发主要分4块
1.access_token的获取和存放:获取access_token的接口是有调用频率的限制的,我们不能每次需要的时候都去调用接口,我们可以将其写入文件,或者写入缓存。access_token的有效期目前为2个小时,每次拿的时候先将我们存放的时间和当前时间作对比,超过7200秒才去请求接口,否则直接拿文件或缓存里面存放的access_token

2.JS-SDK:这块主要是应用于微信的网页开发,可以直接使用微信提供的包括扫描二维码,上传图片,分享,定位等很多接口。具体可见JS-SDK文档和官方demo。所有需要使用JS-SDK的页面必须先注入配置信息,获取配置信息的接口,需要一个jsapi_ticket,和access_token一样,有效期也是2个小时,这里我们要做的也是存放jsapi_ticket和拿取配置信息
注意:这里需要到微信公众平台里面设置我们的JS接口安全域名,否则是用不了的

3.网页授权:这里主要是网页授权获取用户信息,然后插入或者更新的user表

  • 引导用户进入授权页面同意授权,获取code
  • 通过code换取网页授权access_token(与基础支持中的access_token不同)
  • 如果需要,开发者可以刷新网页授权access_token,避免过期
  • 通过网页授权access_token和openid获取用户基本信息(支持UnionID机制)

注意:这里需要到微信公众平台里面设置我们网页授权域名

4.服务器配置:这里主要是作为一个回调,可以监听到用户的事件,比如关注,取关,click事件,接受用户发送的信息,这样我们可以跟各种事件或者信息来进行我们的逻辑

代码如下

Read More

php合成图片加水印

分享自己写的一个php的图像处理的一些方法,包括图片的缩小和放大,两张图的合成,和图片写入文字

这里实现的是一个底图和一个二维码合成并加上水印的功能,其中二维码可以自定义缩放比例

先是生成一个底图画布,然后生成相关大小的二维码图片的临时文件,然后将两张图合成,最后在画布上写入文件

Read More

php+ajax 简易即时聊天室

github的地址是:https://github.com/likangjun/chat
demo: http://demo.likangjun.com/chat

这里是用MySQLtxt文件来保存的聊天记录,然后用js去不断的请求聊天内容展现到页面上而达到了即时的效果,这里也可以用redis这种nosql。之前还在网上看到过一个PHP+Swoole扩展的即时聊天项目,地址是https://github.com/matyhtf/php-webim ,也值得去学习学习

先看下文件结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
chat

├─ ajax.php

├─ chat.php

├─ conn.inc

├─ css

│ ├─ main.css

│ └─ style.css

├─ get.php

├─ image

│ ├─ bg.jpg

│ ├─ close.png

│ ├─ logo.jpg

│ └─ user.jpg

├─ index.php

├─ jquery-1.6.min.js

├─ log

│ └─ 20161026.txt

├─ login.php

├─ logout.php

└─ README.md

log是聊天记录存放目录

conn是用来链接数据库的

indexloginlogout是登录,退出这些页面

ajax是用于接受信息并储存在数据库或文件

最主要的还是chat.phpget.php

chat是聊天室页面,用ajax不断的请求get.php获得聊天内容并展示
get.php里把第一次请求时的聊天条数和第一次以后的聊天条数作对比,然后用死循环去不断查询数据库或者读本地文件获取聊天信息返回给chat.php,从而形成了即时聊天

这个只是一个简单粗暴的方法,性能和体验上还达不到要求,后续也将会去学习研究更好的解决方案

Hexo开启多说评论

首先要在多说中申请一个账号,会得到一个多说的二级域名,我的就是http://likangjun.duoshuo.com

然后在hexo根部目录下_config.yml里配置自己的多说账号

1
2
# Comments
duoshuo_shortname: liakngjun

记得: 后面有一个空格

最后在主题文件themes\landscape\layout\_partial\article.ejs
找到

1
2
3
4
5
6
7
<% if (!index && post.comments && config.disqus_shortname){ %>
<section id="comments">
<div id="disqus_thread">
<noscript>Please enable JavaScript to view the <a href="//disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
</div>
</section>
<% } %>

改为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<% if (!index && post.comments && config.duoshuo_shortname){ %>
<section id="comments">
<!-- 多说评论框 start -->
<div class="ds-thread" data-thread-key="<%= post.layout %>-<%= post.slug %>" data-title="<%= post.title %>" data-url="<%= page.permalink %>"></div>
<!-- 多说评论框 end -->
<!-- 多说公共JS代码 start (一个网页只需插入一次) -->
<script type="text/javascript">
var duoshuoQuery = {short_name:'<%= config.duoshuo_shortname %>'};
(function() {
var ds = document.createElement('script');
ds.type = 'text/javascript';ds.async = true;
ds.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//static.duoshuo.com/embed.js';
ds.charset = 'UTF-8';
(document.getElementsByTagName('head')[0]
|| document.getElementsByTagName('body')[0]).appendChild(ds);
})();
</script>
<!-- 多说公共JS代码 end -->
</section>
<% } %>

也可以看到,我们可以写博客的时候通过comments来控制这篇是否开启评论

Hello World

Welcome to Likangjun

又是一个Hello World

上次写博客的时候还是WordPress

现在在jayxhj的推荐下用Hexo + github 搭建了这个静态博客

后续会做一些博客迁移

并将继续与大家交流,并分享一些有趣的技术

Go