您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

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

2024/3/14 3:56:41发布22次查看
在网上down了一个二维码插件phpqrcode,整合到了thinkphp 3.2.3,然后写了个外部自定义函数直接调用生成二维码,根据参数不同有不同尺寸效果,整合其实挺简单,分享给大家!
今天做项目时要用到生成二维码这个功能,就研究了一下二维码。二维码的原理可以先看看,理解理解>>环境支持:gd库、文件夹可写权限
1、原版的phpqrcode下载地址>>
下载后,我测试了一下,发现只需要其中一个文件就可以完成本功能了,如下图所示文件:
将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,放置如下函数:/**
 * 功能:生成二维码
 * @param string $qr_data   手机扫描后要跳转的网址
 * @param string $qr_level  默认纠错比例 分为l、m、q、h四个等级,h代表最高纠错能力
 * @param string $qr_size   二维码图大小,1-10可选,数字越大图片尺寸越大
 * @param string $save_path 图片存储路径
 * @param string $save_prefix 图片名称前缀
 */
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文件里加入方法,如下:>
upload.zip ( 22.16 kb 下载:375 次 )
ad:真正免费,域名+虚机+企业邮箱=0元
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product