在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
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。