二维码算是时下最流行的一种传递信息的方式,本文所说的二维码当然是指的 QR Code

PHP 生成二维码的方法与例子

我们生成二维码的方式有许多种,例如说在一些生成二维码的网站操作相应的内容、或者说软件自动生成二维码等等。现今二维码使用的非常广泛、甚至去别人家扫一扫二维码就可以连别人家的 wife wifi,所以我们肯定会有地方需要到二维码。

在我们需要用到二维码的时候,去别人家生成二维码的确没有什么问题。

但是,,,,如果,,,,你一直在用的生成二维码的网站倒闭了呢 ..... (开个玩笑,举个例子)

所以,今天我就来发一则非常基础的,关于利用 PHP 生成二维码的方法和例子。


生成二维码

程序员都需要有一个准则,那就是不要重复造轮子。

接下来,我们就主要介绍一下主角:PHP QR Code 这个类(点击名字下载)

官网提供了俩小例子,如下:

<?php
require_once __DIR__ . '/phpqrcode/phpqrcode.php';

QRcode::png('二维码内容', '文件名.png'); // 新建文件
QRcode::png('二维码内容'); // 新建图片输出到浏览器直接显示

方法非常的简单,用法就是引入这个文件之后用 QRcode::png('二维码内容') 就可以实现输出二维码。


一个例子

在这几天,古尔数据推出了一个网络加速服务。

如果通过二维码传递连接信息将会是特别方便的一件事情对吧?

如果我需要将这样的一个类作用于公网服务作为一个 API 来使用的话,我们可以这么做:

<?php
if(empty($_GET['qr'])){
  echo "hhh"; // 判断 GET 到的 qr 如果是空的话返回的文字是什么
}else{
  require_once __DIR__ . '/phpqrcode/phpqrcode.php';
  QRcode::png($_GET['qr'], false, 'L', 10, 1); // 这里把 GET 到的 qr 的值作为二维码内容
}

像我这样的一个文件就可以实现通过地址 http://x.com/x.php?qr=xxx 的方式来输出二维码图片。

如上我还使用到了额外的 4 个传值,分别是 false 不建立文件 L 是容错等级、10 是点的大小 1 是边框的大小。

关于这个类传值的例子可以参考 PHP QR Code 官方例子


建议

如果是希望提供公众服务的话,上面的例子是个很实用的例子,当然、建议还是限制一下字数。

但是如果我们是自己用在自己的网页的话,为了不增加服务器的压力、这里我比较建议使用其他的方法。

生成二维码的方法有很多,有一个特别好的 jq 叫做 qrcode,使用 js 的一个好处就是处理二维码生成工作全部在于客户的浏览器端进行,这个样子的话不需要多大的带宽给你来输出图片也不需要说因为需要生成二维码内容太多太复杂导致 php 压力大。

晒个图

古尔数据网络加速服务所使用的模块 v0.2.1 界面

PHP 生成二维码的方法与例子目前同行的一些功能古尔基本都实现了,除此之外还增加了一周内流量使用图表显示等等。


小结

太久没发文,今天写篇文字排版错乱还望您别介。

这是一个基于 WHMCS 的模块,目前我们团队正在考虑是否应该开源。

由于目前几位大神的这个模块都是在售的,开源会产生一定的利益冲突,所以..待定。

目前有14条回应
Comment
Trackback
Loading ....
  • Dreamer 回应于2周前 回复TA

    是&符号,我刚才貌似说错了,呃,不记得了。。。

  • Dreamer 回应于2周前 回复TA

    如果用API服务直接请求带"&"等符号的url的话应该会被忽略掉后面的内容,导致二维码信息部分丢失。

    • Tomas 回应于2周前 回复TA

      不会的放心吧,例如 a&b 他不会作为两个 GET 传进去,而是直接给你输出一个 a&b 的二维码

  • 小康 回应于2016/06/11 12:35 回复TA

    支持一下~蒋总牛逼

    • Tomas 回应于2016/06/14 01:31 回复TA

      康总也牛逼啊,都自己写客户中心了 ... 我还在写模块的阶段

  • tutugreen 回应于2016/06/10 23:40 回复TA

    我好像用phpqrcode.php会500。。
    改成了include "qrlib.php";

    (话说感觉自己问题好多啊啊AAAAA)

    • Tomas 回应于2016/06/14 01:30 回复TA

      试试看打开 display_errors 看看是什么错误导致的

  • 免费新大陆 回应于2016/05/26 23:31 回复TA

    虽然看不懂,但好像很高科技的样子。

    • Tomas 回应于2016/05/27 00:27 回复TA

      你的网站似乎被墙了,挂代理才可以上去。

      说道免费空间,我团队也有提供哦,https://www.gourdata.com/cart.php

      仅供博客

      • 免费新大陆 回应于2016/05/27 00:29 回复TA

        @Tomas: 什么鬼,为什么被墙?CDN的问题吗?

        • Tomas 回应于2016/05/27 00:30 回复TA

          不知道呀,我这里是两条网线的,我尝试使用电信的无法访问、于是乎我切换到移动的还是显示“连接被重置”

          不过挂 ss 又可以了 。。。

  • 神父 回应于2016/05/26 08:58 回复TA

    蒋总啪啪啪

  • 本篇文章没有Trackback
你目前的身份是游客,请输入昵称和电邮!