一般情况调用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)];
}
- 根据短链生成二维码并上传七牛云(Java)
通过短链生成二维码并上传七牛云(Java) 前言 网上这种帖子其实也是很多,大部分搜出来的是CSDN的,然后点进去一看都几乎一样:所以这次给个自己实践的例子记录. 这次也是通过搜索得到的一部分能实现这 ...
- PHP生成二维码并上传到七牛云
参考资料 qr-code生成二维码 七牛云上传图片 实现步骤 //拿到插入后的id $res = DB::table('book_book')->insertGetId($data); i ...
- ThinkPHP框架整合phpqrcode生成二维码DEMO
ThinkPHP框架发展到今天功能已经变得是非常强大了,但是ThinkPHP框架中没有二维码相关的库,因此我们可以通过整合phpqrcode来完成生成二维码的功能.想使用phpqrcode首先就要把p ...
- phpqrcode 生成二维码
这个项目需要根据信息来自动生成二维码,到网上搜了下,发现php有生成二维码的类库phpqrcode,所以打算就用这个来生成二维码 从官网下载类库源码http://sourceforge.net/pro ...
- RHEL 5 安装phpqrcode生成二维码
VMWARE中全新安装(默认)RHEL. 之后,yum 安装备apache/php 下载并上传phpqrcode 1.1.4版本,并将其解压至/var/www/html/phpqrcode (去掉ip ...
- thinkphp整合系列之phpqrcode生成二维码
php生成二维码其实挺简单的:当然指的是使用qrcode类库: 因此关于是否要写这篇博客:我是犹豫了再三的: 不过最后还是决定写下吧:如果有童鞋急着用:就可以直接引了: 再个也可以作为即将写的文章微信 ...
- Thinkphp3.2结合phpqrcode生成二维码(含Logo的二维码),附案例
首先,下载phpqrcode,将其解压到项目ThinkPHP\Library\Vendor目录下.Index_index.html(模板可自行配置) <form action="{:U ...
- 使用phpqrcode生成二维码
使用PHP语言生成二维码,还是挺有难度的,当然调用生成二维码图片的接口(比如:联图网http://www.liantu.com/的接口)除外,如果自己写代码生成,真的无从下手.然而,我们可以使用php ...
- 使用PHP类库PHPqrCode生成二维码
PHPqrCode是一个PHP二维码生成类库,利用它可以轻松生成二维码,官网提供了下载和多个演示demo, 查看地址:http://phpqrcode.sourceforge.net/. 下载官 ...
随机推荐
- Python中关于进度条的6个实用技巧
1 简介 费老师我在几年前写过的一篇文章(https://www.cnblogs.com/feffery/p/13392024.html)中,介绍过tqdm这个在当下Python圈子中已然非常流行的进 ...
- Makefile 简介
一.引例: #Makefile objects=test1.o test2.o main:$(objects) gcc -o main $(objects) clean: rm main $(obje ...
- springboot+springsecurity+mybatis plus之用户授权
文章目录 前言 一.导入坐标 二.Users实体类及其数据库表的创建 三.controller,service,mapper层的实现 四.核心--编写配置文件 五.无权限界面和登录界面的实现 前言 即 ...
- pip:带你认识一个 Python 开发工作流程中的重要工具
摘要:许多Python项目使用pip包管理器来管理它们的依赖项.它包含在Python安装程序中,是Python中依赖项管理的重要工具. 本文分享自华为云社区<使用Python的pip管理项目的依 ...
- 使用IDEA生产JavaDoc文档
源代码 package com.*****.base; //文档注解 /** * @Author intelliyu * @version 1.0 //版本 * since 1.8 //指明需要最早使 ...
- 1s 创建100G文件,最快的方法是?
在我们日常工作中,为了验证开发的功能,比如:文件上传功能或者算法的处理效率等,经常需要一些大文件进行测试,有时在四处找了一顿之后,发现竟然没有一个合适的,虽然 Linux 中也有一些命令比如:vim. ...
- eslint配置介绍-如何在uniapp中配置eslint
eslint uniapp-eslint及vue-eslint配置 ESLint 是一个开源的 JavaScript 代码检查工具.可以让程序员在编码的过程中发现问题而不是在执行的过程中. 1. es ...
- JavaScript学习基础2
##JavaScript基本对象 1 .function:函数(方法)对象 * 创建: 1.var fun =new Function(形式参数,方法体): 2.function 方法名(参数){ 方 ...
- go学习第一课--语法基础
一.hello world 新建文件helloworld.go package main import "fmt" func main() { fmt.Println( ...
- windodws pyusb hub端口对应连接的usb设备
源码: 1 #!/usr/bin/python 2 import sys 3 import usb.core 4 # find USB devices 5 dev = usb.core.find(fi ...