一、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  : 二维码白色边框尺寸,缺省值: 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类,上传到网站目录!
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缓存标识了!
1.本站大部分内容均收集于网络!若内容若侵犯到您的权益,请发送邮件至:duhaomu@163.com,我们将第一时间处理!
2.资源所需价格并非资源售卖价格,是收集、整理、编辑详情以及本站运营的适当补贴,并且本站不提供任何免费技术支持。
3.所有资源仅限于参考和学习,版权归原作者所有,更多请阅读网站声明。