Heim >php教程 >php手册 >PHP生成二维码功能整合到TP3.2.3

PHP生成二维码功能整合到TP3.2.3

WBOY
WBOYOriginal
2016-06-07 11:38:141621Durchsuche

在网上down了一个二维码插件PHPQRcode,整合到了ThinkPHP 3.2.3,然后写了个外部自定义函数直接调用生成二维码,根据参数不同有不同尺寸效果,整合其实挺简单,分享给大家!

今天做项目时要用到生成二维码这个功能,就研究了一下二维码。二维码的原理可以先看看,理解理解>>环境支持:GD库、文件夹可写权限

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

下载后,我测试了一下,发现只需要其中一个文件就可以完成本功能了,如下图所示文件:
PHP生成二维码功能整合到TP3.2.3
将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,放置如下函数:/**<br>  * 功能:生成二维码<br>  * @param string $qr_data   手机扫描后要跳转的网址<br>  * @param string $qr_level  默认纠错比例 分为L、M、Q、H四个等级,H代表最高纠错能力<br>  * @param string $qr_size   二维码图大小,1-10可选,数字越大图片尺寸越大<br>  * @param string $save_path 图片存储路径<br>  * @param string $save_prefix 图片名称前缀<br>  */<br> function createQRcode($save_path,$qr_data='PHP QR Code :)',$qr_level='L',$qr_size=4,$save_prefix='qrcode'){<br>     if(!isset($save_path)) return '';<br>     //设置生成png图片的路径<br>     $PNG_TEMP_DIR = & $save_path;<br>     //导入二维码核心程序<br>     vendor('PHPQRcode.class#phpqrcode');  //注意这里的大小写哦,不然会出现找不到类,PHPQRcode是文件夹名字,class#phpqrcode就代表class.phpqrcode.php文件名<br>     //检测并创建生成文件夹<br>     if (!file_exists($PNG_TEMP_DIR)){<br>         mkdir($PNG_TEMP_DIR);<br>     }<br>     $filename = $PNG_TEMP_DIR.'test.png';<br>     $errorCorrectionLevel = 'L';<br>     if (isset($qr_level) && in_array($qr_level, array('L','M','Q','H'))){<br>         $errorCorrectionLevel = & $qr_level;<br>     }<br>     $matrixPointSize = 4;<br>     if (isset($qr_size)){<br>         $matrixPointSize = & min(max((int)$qr_size, 1), 10);<br>     }<br>     if (isset($qr_data)) {<br>         if (trim($qr_data) == ''){<br>             die('data cannot be empty!');<br>         }<br>         //生成文件名 文件路径+图片名字前缀+md5(名称)+.png<br>         $filename = $PNG_TEMP_DIR.$save_prefix.md5($qr_data.'|'.$errorCorrectionLevel.'|'.$matrixPointSize).'.png';<br>         //开始生成<br>         QRcode::png($qr_data, $filename, $errorCorrectionLevel, $matrixPointSize, 2);<br>     } else {<br>         //默认生成<br>         QRcode::png('PHP QR Code :)', $filename, $errorCorrectionLevel, $matrixPointSize, 2);<br>     }<br>     if(file_exists($PNG_TEMP_DIR.basename($filename)))<br>         return basename($filename);<br>     else<br>         return FALSE;<br> }3、开始调用,假设通过网址/?m=home&c=index&a=qrcode访问,那我们相应的在Application/Home/Controller/IndexController.class.php文件里加入方法,如下:<?php <br /> namespace Home\Controller;<br> use Think\Controller;<br> class IndexController extends Controller {<br>     public function index(){ }<br> <br>     public function qrcode(){<br>         $save_path = isset($_GET['save_path'])?$_GET['save_path']:ROOT_PATH.'Public/qrcode/';  //图片存储的绝对路径<br>         $web_path = isset($_GET['save_path'])?$_GET['web_path']:'/Public/qrcode/';        //图片在网页上显示的路径<br>         $qr_data = isset($_GET['qr_data'])?$_GET['qr_data']:'http://www.zetadata.com.cn/';<br>         $qr_level = isset($_GET['qr_level'])?$_GET['qr_level']:'H';<br>         $qr_size = isset($_GET['qr_size'])?$_GET['qr_size']:'10';<br>         $save_prefix = isset($_GET['save_prefix'])?$_GET['save_prefix']:'ZETA';<br> <br>         if($filename = createQRcode($save_path,$qr_data,$qr_level,$qr_size,$save_prefix)){<br>             $pic = $web_path.$filename;<br>         }<br>         echo "<img alt="PHP生成二维码功能整合到TP3.2.3" >";<br>     }<br> }4、附不同参数生成的不同图片尺寸:
PHP生成二维码功能整合到TP3.2.3

5、生成的效果如下,扫我,试试看!
PHP生成二维码功能整合到TP3.2.3

6、或直接下载文件包上传到网站根目录即可使用。下载文件包>>

附件 upload.zip ( 22.16 KB 下载:375 次 )

AD:真正免费,域名+虚机+企业邮箱=0元

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn