一般情况调用phpqrcode第三方插件 会把生成的二维码图片保存到服务器,不保存服务器也会以header头的形式输出到浏览器,(我们不允许把图片文件保存的liunx服务器,只能保存到阿里云OSS存储服务器  不符合我的逻辑)所有经过我的日思夜想,于是想出来的实现方式 。我可不可以跟爬虫一样先把这个图片文件资源先获取到,然后直接在后端上传oss

createQrcode 生成二维码方法

    public function createQrcode(){
        if(!$_POST['str'])  return false;
        $str = $_POST['str'];
        require_once ROOT.'cube/action/phpqrcode/phpqrcode/qrlib.php';         //包含类文件

        $QRcode = new \QRcode();
        //允许的错误级别
        $errorCorrectionLevel = 'L';
        if (isset($level) && in_array($level, array('L','M','Q','H')))
            $errorCorrectionLevel = $level;   

        //二维码大小
        $matrixPointSize = 4;
        if (isset($_POST['size'])){
            $size = $_POST['size'];
            $matrixPointSize = min(max((int)$size, 1), 10);
        }
        if (isset($str)) {

            $QRcode->png($str, false, $errorCorrectionLevel, $matrixPointSize);

        }else{
            return "ERRORDATA";
        }     

    }

uploadqrcode 获取二维码上传OSS

    public function uploadqrcode(){
        //生成而我加密字符串
        $str = 'orderid=111';    // 被加密信息
        $key = 'resss';    // 密钥
        $strs = A('strlib/basic/encrypt',array($str, $key));//加密后的字符串

        $name = date('Y-m-d').A('strlib/basic/randstr',array(6,3));
        /*
        //模拟get请求
        $data = array(
            'name'=>'zhezhao',
            'age'=>'23'
            );
        $query = http_build_query($data);

        $url = 'http://localhost/get.php';//这里一定要写完整的服务页面地址,否则php程序不会运行

        $result = file_get_contents($url.'?'.$query);
        */
        //这里为了安全性我选择post请求
        $data = array(
            'str'=>$strs
            );

        $query = http_build_query($data);

        $options['http'] = array(
             'timeout'=>60,
             'method' => 'POST',
             'header' => 'Content-type:application/x-www-form-urlencoded',
             'content' => $query
            );

        $url = 'http://'.$_SERVER['HTTP_HOST'].'/index.php/order/lineOrder/createQrcode';
        $context = stream_context_create($options);
        $result = file_get_contents($url, false, $context);
        A('oss/object/putObject',array('bucket',$_SERVER['HTTP_HOST'].'/lineorder/qrcode/'.$name.'.png',$result));
    }

这里遇到一个问题就是我需要把二维码的参数传递个createQrcode  所有想到用模拟表单

另附字符串加密方法 (可逆向解密)

//加密    
public function encrypt($data, $key)
    {
        $key    =    md5($key);
        $x        =    0;
        $len    =    strlen($data);
        $l        =    strlen($key);
        $char = $str = '';
        for ($i = 0; $i < $len; $i++)
        {
            if ($x == $l)
            {
                $x = 0;
            }
            $char .= $key{$x};
            $x++;
        }
        for ($i = 0; $i < $len; $i++)
        {
            $str .= chr(ord($data{$i}) + (ord($char{$i})) % 256);
        }
        return base64_encode($str);
    }
//解密
 public function decrypt($data, $key)
    {
        $key = md5($key);
        $x = 0;
        $data = base64_decode($data);
        $len = strlen($data);
        $l = strlen($key);
        $char = $str = '';
        for ($i = 0; $i < $len; $i++)
        {
            if ($x == $l)
            {
                $x = 0;
            }
            $char .= substr($key, $x, 1);
            $x++;
        }
        for ($i = 0; $i < $len; $i++)
        {
            if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1)))
            {
                $str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1)));
            }
            else
            {
                $str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1)));
            }
        }
        return $str;
    }

生成随机字符串

    // 数值型字符串,代号 1
    private $cs1 = array('0','1','2','3','4','5','6','7','8','9');
    // 纯小写字符串,代号 2
    private $cs2 = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
    // 多类型字符串,代号 3
    private $cs3 = array
    (
        '0','1','2','3','4','5','6','7','8','9',
        'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
        'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'
    );

    public function randstr($len,$type=1)
    {
        if( $len<1 ) return false;
        $RET = '';
        switch( $type )
        {
            case 1:
                $RET = $RET.$this->randcs1(false);
                for( $i=2; $i<=$len; $i++ ) $RET = $RET.$this->randcs1();
                return $RET;
            case 2:
                for( $i=1; $i<=$len; $i++ ) $RET = $RET.$this->cs2[rand(0,25)];
                return $RET;
            case 3:
                $RET = $RET.$this->randcs3(false);
                for( $i=2; $i<=$len; $i++ ) $RET = $RET.$this->randcs3();
                return $RET;
            default:
                return false;
        }
    }

    private function randcs1($zero=true)
    {
        $from = 1;
        if( $zero ) $from = 0;
        return $this->cs1[rand($from,9)];
    }

    private function randcs3($zero=true)
    {
        $from = 1;
        if( $zero ) $from = 0;
        return $this->cs3[rand($from,61)];
    }

php 使用phpqrcode生成二维码并上传到OSS的更多相关文章

  1. 根据短链生成二维码并上传七牛云(Java)

    通过短链生成二维码并上传七牛云(Java) 前言 网上这种帖子其实也是很多,大部分搜出来的是CSDN的,然后点进去一看都几乎一样:所以这次给个自己实践的例子记录. 这次也是通过搜索得到的一部分能实现这 ...

  2. PHP生成二维码并上传到七牛云

    参考资料 qr-code生成二维码    七牛云上传图片 实现步骤 //拿到插入后的id $res = DB::table('book_book')->insertGetId($data); i ...

  3. ThinkPHP框架整合phpqrcode生成二维码DEMO

    ThinkPHP框架发展到今天功能已经变得是非常强大了,但是ThinkPHP框架中没有二维码相关的库,因此我们可以通过整合phpqrcode来完成生成二维码的功能.想使用phpqrcode首先就要把p ...

  4. phpqrcode 生成二维码

    这个项目需要根据信息来自动生成二维码,到网上搜了下,发现php有生成二维码的类库phpqrcode,所以打算就用这个来生成二维码 从官网下载类库源码http://sourceforge.net/pro ...

  5. RHEL 5 安装phpqrcode生成二维码

    VMWARE中全新安装(默认)RHEL. 之后,yum 安装备apache/php 下载并上传phpqrcode 1.1.4版本,并将其解压至/var/www/html/phpqrcode (去掉ip ...

  6. thinkphp整合系列之phpqrcode生成二维码

    php生成二维码其实挺简单的:当然指的是使用qrcode类库: 因此关于是否要写这篇博客:我是犹豫了再三的: 不过最后还是决定写下吧:如果有童鞋急着用:就可以直接引了: 再个也可以作为即将写的文章微信 ...

  7. Thinkphp3.2结合phpqrcode生成二维码(含Logo的二维码),附案例

    首先,下载phpqrcode,将其解压到项目ThinkPHP\Library\Vendor目录下.Index_index.html(模板可自行配置) <form action="{:U ...

  8. 使用phpqrcode生成二维码

    使用PHP语言生成二维码,还是挺有难度的,当然调用生成二维码图片的接口(比如:联图网http://www.liantu.com/的接口)除外,如果自己写代码生成,真的无从下手.然而,我们可以使用php ...

  9. 使用PHP类库PHPqrCode生成二维码

    PHPqrCode是一个PHP二维码生成类库,利用它可以轻松生成二维码,官网提供了下载和多个演示demo, 查看地址:http://phpqrcode.sourceforge.net/.    下载官 ...

随机推荐

  1. Python入门-安装Python开发环境

    1.安装开发环境 #方法一:直接安装anaconda,解释器和环境,一个软件就可以包括,简单方便 参考地址:https://www.cnblogs.com/sui776265233/p/1145300 ...

  2. IO ——字节流

    什么是流? 概念:内存与存储设备之间传输数据的通道.程序运行后保存在内存,文件一般在硬盘中,在程序中读写文件,需要在内存和存储设备中建立通道.数据借助流传输 流的分类: 按流向: 输入流:将存储设备中 ...

  3. 【GPLT】 2018年天梯赛全国总决赛 L2-2 小字辈(c++)

    题目: 这一题并不是很难,属于常规的图论遍历题,这里我是用的bfs(dfs应该也可以,但明显bfs简单一些). 本人写的时候写了很多没必要头文件,自己可以根据内容删去,必要的我会写上注释 如有错误,请 ...

  4. 如何在Web前端实现CAD图文字全文搜索功能之技术分享

    现状 在CAD看图过程中我们经常会需要用到查找文字的功能,在AutoCAD软件查找一个文字时,可以通过打开左下角输入命令find,输入查找的文字,然后设置查找范围,就可以搜索到需要查询的文字.但在We ...

  5. [AcWing 36] 合并两个排序的链表

    点击查看代码 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * L ...

  6. 开发并发布npm包,支持TypeScript提示,rollup构建打包

    前言: 工作了几年,想把一些不好找现成的库的常用方法整理一下,发布成npm包,方便使用.也学习一下开发发布流程. 主要用到的工具:npm. 开发库:babel.typescript.rollup.es ...

  7. asyncio 异步编程

    首先了解一下协程,协程的本质就是一条线程,多个任务在一条线程上来回切换,协程的所有切换都是基于用户,只有在用户级别才能感知到的 IO 才会用协程模块来规避,在 python 中主要使用的协程模块是 a ...

  8. Spring Ioc源码分析系列--前言

    Spring Ioc源码分析系列--前言 为什么要写这个系列文章 首先这是我个人很久之前的一个计划,拖了很久没有实施,现在算是填坑了.其次,作为一个Java开发者,Spring是绕不开的课题.在Spr ...

  9. 【Python情感分析】用python情感分析李子柒频道视频热门评论

    一.事件背景 今天是2021.12.2日,距离李子柒断更已经4个多月了,这是我在YouTube李子柒油管频道上,观看李子柒2021年7月14日上传的最后一条视频,我录制了视频下方的来自全世界各国网友的 ...

  10. call()、apply()、arguments

    一.call(),apply() 1.作为函数对象(指函数方法名,不带括号)的方法,需要通过函数对象调用:当对函数调用这两个方法时都会调用函数执行. <script> // 这个函数中,f ...