在php请求地址,后面跟上一段需要生成二维码的网址,比如:https://e.tqge.com/ajax/get_qrcodeimg.php?url=http://www.baidu.com
在浏览器里打开就能看到一张二维码图片,方便简单。需要生成别的网址,只需要
将参数部分的,url=替换成你的网址。
这是怎么做到的呢,先在控制器里添加一个方法,然后构建一个访问路径能访问到这个方法,比如https://e.tqge.com/user/myqrcode/getqrcode
这个方法的目的就是输出一段html包裹着img的标签,当然里面还有生成的二维码的图片based64地址。
记得在thinkphp里先引入phpqcode库
public function getQrcode(Request $request)
{
$url = $request->get('url');
// 实例化验证器
$Validate = new \think\Validate();
// 设置验证规则
$Validate->rule([
'url' => 'require|url',
]);
// 设置验证失败时的消息
$Validate->message([
'url.require' => '目标网址不能为空',
'url.url' => '请填写正确的网址',
]);
// 进行验证
if (!$Validate->check(['url' => $url])) {
// 直接输出错误信息
echo "Error: " . $Validate->getError();
return;
}
require "../vendor/phpqrcode/phpqrcode.php";
$qRcode = new \QRcode();
$data = $url;
$level = 'L';
$size = 6;
$dir = __DIR__ . '/../../../public/phpqrcode/';
if (!file_exists($dir)) {
mkdir($dir, 0777, true);
}
$filename = date('Ymd_His') . '.png';
$outfile = $dir . $filename;
$qRcode->png($data, $outfile, $level, $size);
$imgData = file_get_contents($outfile);
$imgBase64 = 'data:image/png;base64,' . base64_encode($imgData);
// 直接输出Base64编码的图片数据
echo '<img class="qrimg" style="width: 400px; display: block; margin-left: auto; margin-right: auto;" src="'.$imgBase64.'" />';
}
当然还需要一个php文件可以使用 cURL 获取的上面方法的响应内容,通常是从远程服务器获得的数据
<?php
// 获取前端传递的参数
$url = $_GET['url'] ?? '';
// 检查是否提供了 URL 参数
if (empty($url)) {
echo "Error: No URL provided.";
exit;
}
// 初始化 cURL 会话
$curl = curl_init();
// 设置 cURL 选项
curl_setopt($curl, CURLOPT_URL, "https://e.tqge.com/user/myqrcode/getqrcodeimg?url=" . urlencode($url));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
// 执行 cURL 会话
$response = curl_exec($curl);
// 检查是否有错误发生
if (curl_errno($curl)) {
echo 'Error:' . curl_error($curl);
} else {
// 输出响应内容
header("Access-Control-Allow-Origin: *"); // 设置 CORS 头部
echo $response;
}
// 关闭 cURL 会话
curl_close($curl);
如果要获取链接的响应结果,还需要用ajax的方式
例如
//html结构
<div class="layui-col-md6">
<h3 class="footer-item-title">官方交流群</h3>
<p class="img-group"><img id="qrcode" src="../images/logo.png" alt="二维码" />扫码免费加入{{ config('sys.web.name') }}官方交流QQ群,与各位大佬一起交流技术、讨论问题。</p>
</div>
//引入Jquery
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
//Ajax具体实现
<script>
$(document).ready(function() {
$.ajax({
type: "GET",
url: "https://e.tqge.com/user/myqrcode/getqrcode",
data: {
url: "https://qm.qq.com/q/FIxrlaWK8E" // 这里假设您已经有了要生成二维码的 URL
},
dataType: "text",
success: function(obj) {
if (obj) {
// 假设 obj 就是二维码图片的 URL
$('#qrcode').attr('src', obj);
} else {
// 如果没有获取到二维码图片,显示错误信息
alert('未能获取到二维码图片');
}
},
error: function(jqXHR, textStatus, errorThrown) {
console.error("Error fetching QR code:", textStatus, errorThrown);
alert('无法获取二维码,请稍后再试');
}
});
});
</script>
一个可以直接在html标签里输出图片的链接接口:
https://khzl2.fakazhan.com/qrcode.php?content=https://www.tqge.com/
下面这种就不能直接在html标签里显示,只能直接输出图片:
https://e.tqge.com/user/myqrcode/getqrcodeimg?url=https://www.tqge.com/206752转载注意保留原文链接:https://www.tqge.com/206752
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。


