? PHP生成二維碼功能整合到TP3.2.3-青島金屯化工有限公司
新聞咨詢


在網上down了一個二維碼插件PHPQRcode,整合到了ThinkPHP 3.2.3,然后寫了個外部自定義函數直接調用生成二維碼,根據參數不同有不同尺寸效果,整合其實挺簡單,分享給大家!

今天做項目時要用到生成二維碼這個功能,就研究了一下二維碼。二維碼的原理可以先看看,理解理解>>

環境支持:GD庫、文件夾可寫權限

1、原版的PHPQRcode下載地址>>

下載后,我測試了一下,發現只需要其中一個文件就可以完成本功能了,如下圖所示文件:

image.png

phpqrcode.php重命名為符合thinkPHP文件規則的文件名class.phpqrcode.php,放置到:ThinkPHP/Library/Vendor/PHPQRcode/class.phpqrcode.php (注意大小寫哦)
注意:現在放置的是thinkPHP默認的第三方類庫目錄,如果在index.php定義了如define('VENDOR_PATH',APP_PATH.'Common/Vendor/'); 那么文件放置的路徑要與之相同,免得出現class 'QRcode' not found情況。

2
、創建用戶自定義函數文件Application/Home/Common/function.php,放置如下函數:

function createQRcode($save_path,$qr_data='PHP QR Code :)',$qr_level='L',$qr_size=4,$save_prefix='qrcode'){

if(!isset($save_path)) return '';

//設置生成png圖片的路徑

$PNG_TEMP_DIR = & $save_path;

//導入二維碼核心程序

vendor('PHPQRcode.class#phpqrcode');  //注意這里的大小寫哦,不然會出現找不到類,PHPQRcode是文件夾名字,class#phpqrcode就代表class.phpqrcode.php文件名

//檢測并創建生成文件夾

if (!file_exists($PNG_TEMP_DIR)){

mkdir($PNG_TEMP_DIR);

}

$filename = $PNG_TEMP_DIR.'test.png';

$errorCorrectionLevel = 'L';

if (isset($qr_level) && in_array($qr_level, array('L','M','Q','H'))){

$errorCorrectionLevel = & $qr_level;

}

$matrixPointSize = 4;

if (isset($qr_size)){

$matrixPointSize = & min(max((int)$qr_size, 1), 10);

}

if (isset($qr_data)) {

if (trim($qr_data) == ''){

die('data cannot be empty!');

}

//生成文件名 文件路徑+圖片名字前綴+md5(名稱)+.png

$filename = $PNG_TEMP_DIR.$save_prefix.md5($qr_data.'|'.$errorCorrectionLevel.'|'.$matrixPointSize).'.png';

//開始生成

QRcode::png($qr_data, $filename, $errorCorrectionLevel, $matrixPointSize, 2);

} else {

//默認生成

QRcode::png('PHP QR Code :)', $filename, $errorCorrectionLevel, $matrixPointSize, 2);

}

if(file_exists($PNG_TEMP_DIR.basename($filename)))

return basename($filename);

else

return FALSE;

}

3、開始調用,假設通過網址/?m=home&c=index&a=qrcode訪問,那我們相應的在Application/Home/Controller/IndexController.class.php文件里加入方法,如下:

<?php

namespace Home\Controller;

use Think\Controller;

class IndexController extends Controller {

public function index(){ }

public function qrcode(){

$save_path = isset($_GET['save_path'])?$_GET['save_path']:ROOT_PATH.'Public/qrcode/';  //圖片存儲的絕對路徑

$web_path = isset($_GET['save_path'])?$_GET['web_path']:'/Public/qrcode/';        //圖片在網頁上顯示的路徑

$qr_data = isset($_GET['qr_data'])?$_GET['qr_data']:'http://www.zetadata.com.cn/';

$qr_level = isset($_GET['qr_level'])?$_GET['qr_level']:'H';

$qr_size = isset($_GET['qr_size'])?$_GET['qr_size']:'10';

$save_prefix = isset($_GET['save_prefix'])?$_GET['save_prefix']:'ZETA';

if($filename = createQRcode($save_path,$qr_data,$qr_level,$qr_size,$save_prefix)){

$pic = $web_path.$filename;

}

echo "<img src='".$pic."'>";

}

}

4、附不同參數生成的不同圖片尺寸:

image.png

5、生成的效果如下,掃我,試試看!

image.png

6、或直接下載文件包上傳到網站根目錄即可使用。下載文件包>> upload.zip 

本文章摘自:http://www.thinkphp.cn/code/1283.html(特別感謝原文作者!!)

(該文章僅作為技術留檔)


PHP生成二維碼功能整合到TP3.2.3

喜歡,請掃碼分享

公司地址:青島膠州市李哥莊鎮大屯一村 

電話:0532-88292835 E-Mail : 986503759@qq.com

Copyright?2007-2008 青島金屯化工有限公司 All Rights Reserved.

魯ICP備16050441號-1 | 安全生產許可證:(魯)WH安許證字(2014)020062號

Whois查詢網站備案Thinkphp | LNMP |

TOP

微信捕鱼达人h5怎么充值