一、PHP 代码

<?php    
/**    
* PHP在线网址二维码API源码分享示例     
**/    
//载入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&nbsp&nbsp: 二维码白色边框尺寸,缺省值: 0px<br /><br />    
    e&nbsp&nbsp: 容错级别(errorLevel),可选参数如下(缺省值 L):<br />    
    &nbsp;&nbsp;&nbsp;&nbsp;&nbspL水平    7%的字码可被修正<br />    
    &nbsp;&nbsp;&nbsp;&nbsp;&nbspM水平    15%的字码可被修正<br />    
    &nbsp;&nbsp;&nbsp;&nbsp;&nbspQ水平    25%的字码可被修正<br />    
    &nbsp;&nbsp;&nbsp;&nbsp;&nbspH水平    30%的字码可被修正<br />    
    p&nbsp&nbsp: 二维码尺寸,可选范围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类,上传到网站目录!

https://pan.baidu.com/s/1gditDsv


三、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

按下F12,到 NetWork 选项卡查看头部已经可以看到百度云加速的HIT缓存标识了!

评论(0条)

刀客源码 游客评论