当前环境是mac,项目目录是/web/
路径的问题特别容易混淆,特别是在include和require_once或者file_get_content()的时候,
view里面展示图片也会出现路径错误的问题
.
表示当前目录..
表示当前目录的上一级目录。./
表示当前目录下的某个文件或文件夹,../
表示当前目录上一级目录的文件或文件夹
当前环境是mac,项目目录是/web/
路径的问题特别容易混淆,特别是在include和require_once或者file_get_content()的时候,
view里面展示图片也会出现路径错误的问题
.
表示当前目录..
表示当前目录的上一级目录。./
表示当前目录下的某个文件或文件夹,../
表示当前目录上一级目录的文件或文件夹
微信接口这块的东西不是弄起来不算特别难,封装好了基本都能复用,不过没做过微信开发的同学第一次整起来还是显得有些蛋疼的。
常用的开发主要分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表
注意
:这里需要到微信公众平台里面设置我们网页授权域名
4.服务器配置
:这里主要是作为一个回调,可以监听到用户的事件,比如关注,取关,click事件,接受用户发送的信息,这样我们可以跟各种事件或者信息来进行我们的逻辑
代码如下
分享自己写的一个php的图像处理的一些方法,包括图片的缩小和放大,两张图的合成,和图片写入文字
这里实现的是一个底图和一个二维码合成并加上水印的功能,其中二维码可以自定义缩放比例
先是生成一个底图画布,然后生成相关大小的二维码图片的临时文件,然后将两张图合成,最后在画布上写入文件
github的地址是:https://github.com/likangjun/chat
demo: http://demo.likangjun.com/chat
这里是用MySQL
和txt
文件来保存的聊天记录,然后用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
39chat
├─ 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
是用来链接数据库的
index
,login
,logout
是登录,退出这些页面
ajax
是用于接受信息并储存在数据库或文件
最主要的还是chat.php
和get.php
chat
是聊天室页面,用ajax
不断的请求get.php
获得聊天内容并展示get.php
里把第一次请求时的聊天条数和第一次以后的聊天条数作对比,然后用死循环去不断查询数据库或者读本地文件获取聊天信息返回给chat.php
,从而形成了即时聊天
这个只是一个简单粗暴的方法,性能和体验上还达不到要求,后续也将会去学习研究更好的解决方案
首先要在多说中申请一个账号,会得到一个多说的二级域名,我的就是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来控制这篇是否开启评论