分享张戈博客自用的php网址在线转换二维码的API源码 | 张戈博客
最新补充:博客已分享性能最好的js
去年张戈博客曾分享过一篇与二维码API有关的文章:《分享几个可用的二维码API,以及给博客添加文章二维码图片的方法》,由于第三方二维码API总感觉稳定性和自定义性稍差,所以就到网上爬了一下相关代码,自己搭建了一个二维码API,用了几个月感觉良好,完全可以满足我博客的自定义需求。至于博客二维码这个功能是否鸡肋,那就仁者见仁智者见智了。我个人认为,在这个移动互联网飞速发展的时代,抢占先机,做好移动端的用户体验至关重要!
这个功能不是原创,而且百度一搜一大把,都不好意思拿来分享一二。最近看到有网友留言,想要我分享这个二维码API源码,鉴于博客分享初衷,就厚着脸皮贴出来了。当然,不止是那个qr code类,而是搭建成品的整体代码或心得,毕竟张戈博客存在的目的就是尽力降低各类IT教程的使用门槛(哈,是不是感觉很高尚...)!
一、PHP 代码
<?php
|
|
/**
|
|
* PHP在线网址二维码API源码分享示例 By 张戈博客(zhang.ge)
|
|
* 文章地址:https://zhang.ge/5031.html
|
|
**/
|
|
//载入qrcode类
|
|
include './phpqrcode.php';
|
|
//取得GET参数
|
|
$url = isset($_GET['url']) ? $_GET['url'] : 'help';
|
|
$errorLevel = isset($_GET['e']) ? $_GET['e'] : 'L';
|
|
$PointSize = isset($_GET['p']) ? $_GET['p'] : '3';
|
|
$margin = isset($_GET['m']) ? $_GET['m'] : '0';
|
|
preg_match('/http:\/\/([\w\W]*?)\//si', $url, $matches);
|
|
//简单判断
|
|
//if ( $matches[1] != 'zhang.ge' && $matches[1] != 'zgboke.com' || $url == 'help') { //取消此行注释并注释下面一行,就能加入自定义的url过滤功能
|
|
if ( $url == 'help'){
|
|
//简单的描述一下使用方法
|
|
header('Content-type: text/html; charset=utf-8');
|
|
echo '<title>在线二维码API接口| 张戈博客</title>';
|
|
echo '<h1>欢迎使用张戈博客在线二维码API服务!</h1>
|
|
使用前请仔细查看参数说明:<br />
|
|
<br />
|
|
url: 二维码对应的网址<br /><br />
|
|
m  : 二维码白色边框尺寸,缺省值: 0px<br /><br />
|
|
e  : 容错级别(errorLevel),可选参数如下(缺省值 L):<br />
|
|
 L水平 7%的字码可被修正<br />
|
|
 M水平 15%的字码可被修正<br />
|
|
 Q水平 25%的字码可被修正<br />
|
|
 H水平 30%的字码可被修正<br />
|
|
p  : 二维码尺寸,可选范围1-10(具体大小和容错级别有关)(缺省值:3)<br /><br />
|
|
常规用法:<a href='seo.zgboke.com/qr/?m=0&e=L&p=3&url=https:///' target='_blank'>http://seo.zgboke.com/qr/?m=0&e=L&p=3&url=https://zhang.ge/</a><br /><br />
|
|
CDN 加速:<br />
|
|
格式:http://seo.zgboke.com/qr/$m_$e_$p_$url_cdn.png <br />
|
|
示例:<a href='seo.zgboke.com/qr/0_l_3_https:///_cdn.png' target='_blank'>http://seo.zgboke.com/qr/0_l_3_https://zhang.ge_cdn.png</a><br />
|
|
';
|
|
exit();
|
|
} else {
|
|
//调用二维码生成函数
|
|
createqr($url, $errorLevel, $PointSize, $margin);
|
|
}
|
|
//简单二维码生成函数
|
|
function createqr($value,$errorCorrectionLevel,$matrixPointSize,$margin) {
|
|
QRcode::png($value, false, $errorCorrectionLevel, $matrixPointSize, $margin);
|
|
}
|
|
?>
|
将以上代码保存为php文件(比如qr.php),上传到网站指定目录(比如根目录 /)。
二、QrCode类
下载PHP的QrCode类,上传到网站目录,其实百度一搜一大把,还是贴上张戈博客自用的文件吧!
版权说明
本站提供的下载内容版权归本站所有。转载 必须 注明出处!
* 标有 “转载” 字样的文章,内容版权归原作者所有。
Ps:以上相关代码均已包含在内。
三、CDN 加速
因为这个API是在线生成的,如果请求过于频繁,将会影响到服务器性能和加载速度。所以,我们有必要继续优化一下。我个人想到3个解决方案:
①、每生成一个新的二维码图片就缓存一份到服务器,下次若是相同的内容,将直接读取;
②、利用伪静态重写请求地址,伪装成静态文件格式,比如png、jpg等,然后开启免费CDN;
③、结合①和②,实现伪静态+CDN加速+浏览器缓存加速,达到优化加载速度。
目前张戈博客仅使用了第 ② 种方案,已完全可以满足博客的需求,所以就懒得去折腾更完善的方法,感兴趣的童鞋可以自己去试试,下面说一下伪静态规则。
张戈博客将这个API搭建在万网的免费虚拟主机上,所以仅分享Apache伪静态规则,其他WEB服务器请自行解决。
Apache伪静态规则:
RewriteEngine on
|
|
RewriteBase /
|
|
#QR二维码
|
|
RewriteRule ^qr/(.*)_(.*)_(.*)_http:/(.*)_cdn\.png$ qr/index.php?m=$1&e=$2&p=$3&url=http://$4 [L]
|
|
RewriteRule ^qr/(.*)_(.*)_(.*)_(.*)_cdn\.png$ qr/index.php?m=$1&e=$2&p=$3&url=$4 [L]
|
注:以上是将API源码上传到网站根目录下的 qr 文件夹的例子!
伪静态之后,这个二维码地址就是一个正常的 png格式了,只要到免费CDN(比如百度云加速或360网站卫士等)开启静态资源缓存即可实现CDN加速。
四、使用范例
直接访问本文第一段代码所保存的文件就能看到简单的使用说明了:
欢迎使用张戈博客在线二维码API服务!
|
|
使用前请仔细查看参数说明:
|
|
url: 二维码对应的网址
|
|
m : 二维码白色边框尺寸,缺省值: 0px
|
|
e : 容错级别(errorLevel),可选参数如下(缺省值 L):
|
|
L水平 7%的字码可被修正
|
|
M水平 15%的字码可被修正
|
|
Q水平 25%的字码可被修正
|
|
H水平 30%的字码可被修正
|
|
p : 二维码尺寸,可选范围1-10(具体大小和容错级别有关)(缺省值:3)
|
|
常规用法:http://seo.zgboke.com/qr/?m=0&e=L&p=3&url=https://zhang.ge/
|
|
CDN 加速:
|
|
格 式:http://seo.zgboke.com/qr/$m_$e_$p_$url_cdn.png
|
|
示 例:http://seo.zgboke.com/qr/0_l_3_https://zhang.ge_cdn.png
|
查看效果:http://seo.zgboke.com/qr/0_l_3_https://zhang.ge_cdn.png
按下F12,到 NetWork 选项卡查看头部已经可以看到百度云加速的HIT缓存标识了!
至于如何应用到博客当中,请移步查看张戈博客以前分享的教程:https://zhang.ge/4609.html