一般情况调用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/. 下载官 ...
随机推荐
- Windows下安装mysql(非安装包)
Windows下安装mysql(非安装包) 参考:https://www.cnblogs.com/yunlongaimeng/p/12558638.html 1.下载MYSQL(慢的话可以用迅雷,或其 ...
- Python Pandas库 初步使用
用pandas+numpy读取UCI iris数据集中鸢尾花的萼片.花瓣长度数据,进行数据清理,去重,排序,并求出和.累积和.均值.标准差.方差.最大值.最小值
- Linux中权限对于文件和目录的区别
Linux系统中的权限对于文件和目录来说,是有一定区别的 下面先列举下普通文件对应的权限 1)可读r:表示具有读取.浏览文件内容的权限,例如,可以对文件执行 cat.more.less.head.ta ...
- Apache Doris 通过ODBC连接SQL Server
社区有小伙伴有使用Doris ODBC外表连接SQL Server数据库,使用中遇到不知道驱动怎么安装,苦于我这边也没有SQL Server的环境,正好社区有用户使用了这个数据库,也安装ODBC驱动测 ...
- XCTF练习题---MISC---misc_pic_again
XCTF练习题---MISC---misc_pic_again flag:hctf{scxdc3tok3yb0ard4g41n~~~} 解题步骤: 1.观察题目,下载附件 2.拿到手是一张图片,直接上 ...
- 题解0011:图书管理(哈希、vector)
信奥一本通--哈希 里的例题2 题目链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1456 题目描述:两个命令,一个是进一本名字为s的图书,一个是 ...
- 《计算机组成原理/CSAPP》网课总结(二)——编译原理基础
这部分是四月份的安排,拖到五一放假了,主要是对源码编译过程的一次总结,总的来说,大致可分为预编译.编译.汇编和链接四部分.这里简单记录一下: 一 概述 1.预处理 或者说是预编译,指的是在编译前需要做 ...
- 原来 Linux 日志文件系统是这样工作的~
关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 作者:Linux Performance 链接:http://linuxperf.com/?p ...
- 老生常谈系列之Aop--Aop的经典应用之Spring的事务实现分析(三)
老生常谈系列之Aop--Aop的经典应用之Spring的事务实现分析(三) 前言 上一篇文章老生常谈系列之Aop--Aop的经典应用之Spring的事务实现分析(二)从三个问题导入,分析了Spring ...
- 老生常谈系列之Aop--CGLIB动态代理的底层实现原理
老生常谈系列之Aop--CGLIB动态代理的底层实现原理 前言 上一篇老生常谈系列之Aop--JDK动态代理的底层实现原理简单讲解了JDK动态代理的实现,动态代理常用实现里面的双子星还有另一位--CG ...