演示网站:https://2fa.hk/tools/qr/generate_qr.php

在PHP环境下生成二维码是完全可行的,你可以使用一个PHP库来帮助你完成这个任务。PHP QR Code 是一个流行的库,能够在PHP中生成二维码。

1. 安装 PHP QR Code 库

首先,你需要下载并安装 PHP QR Code 库。你可以从 PHP QR Code 官方网站 或其 GitHub 页面 获取。

假设你已经下载了 phpqrcode 库并将其放置在你的项目中。

2. 使用 PHP 生成二维码

创建一个PHP页面,通过该页面传入链接并生成二维码图片。以下是一个简单的实现步骤:

  1. 安装/包含 QR Code 库 将 phpqrcode 解压缩并将 phpqrcode 文件夹包含在项目中。
  2. 生成二维码的 PHP 文件: generate_qr.php
<?php
// 引入 QR 生成库
include("/www/wwwroot/根目录/vendor/phpqrcode/qrlib.php");

$defaultUrl = "https://2fa.hk";
$qrImage = '';

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $url = isset($_POST['url']) ? trim($_POST['url']) : '';

    if (empty($url)) {
        $error = "请输入一个有效的 URL!";
    } elseif (!filter_var($url, FILTER_VALIDATE_URL)) {
        $error = "请输入一个有效的 URL!";
    } else {
        $url = filter_var($url, FILTER_SANITIZE_URL);
        $_SESSION['url'] = $url;

        // 生成二维码图片
        $tempDir = "/www/wwwroot/根目录/tools/qr/temp_qr";
        if (!file_exists($tempDir)) {
            mkdir($tempDir, 0777, true);
        }

        $uniqueName = md5($url . time() . rand()) . ".png";
        $fileName = "$tempDir/$uniqueName";
        $qrImage = "/tools/qr/temp_qr/$uniqueName";

        QRcode::png($url, $fileName, QR_ECLEVEL_L, 8, 2);

        $_SESSION['qrImage'] = $qrImage;

        // 不跳转,直接显示
        // header("Location: " . $_SERVER['PHP_SELF']);
        // exit();
    }
} else {
    $url = isset($_SESSION['url']) ? $_SESSION['url'] : $defaultUrl;
    $qrImage = isset($_SESSION['qrImage']) ? $_SESSION['qrImage'] : '';
}
?>

<?php if (isset($error)) : ?>
    <div id="error-message" class="error-message"><?= $error ?></div>
<?php endif; ?>

<div class="container">
    <nav class="laotie">
        <form action="" method="post" class="qr-form">
            <h2>二维码生成器</h2>
            <div class="qr-container">
                <div class="qr-left">
                    <label for="url">请输入链接:</label>
                    <input type="text" id="url" name="url" value="<?= htmlspecialchars($url) ?>" placeholder="https://2fa.hk" required>
                    <button type="submit">生成二维码</button>
                    <p class="info-text">本站生成的二维码长期有效</p>
                </div>
                <div class="qr-right">
                    <?php
                        $defaultQrImage = '/tools/qr/qr_code.png';
                        $finalImage = $qrImage ?: $defaultQrImage;
                    ?>
                    <img src="<?= htmlspecialchars($finalImage) ?>" alt="QR Code" class="qr-image" />
                    <?php if ($qrImage): ?>
                     
                    <?php endif; ?>
                </div>
            </div>
        </form>
    </nav>
</div>

<style>
    .qr-form {
        max-width: 1160px;
        margin: 0 auto;
        padding: 20px;
        background-color: white;
        border-radius: 8px;
    }
    .qr-container {
        display: flex;
        justify-content: space-between;
        gap: 20px;
    }
    .qr-left, .qr-right {
        flex: 1;
    }
    .qr-left {
        display: flex;
        flex-direction: column;
        justify-content: center;
    }
    .qr-left label {
        font-size: 1.2rem;
        margin-bottom: 8px;
    }
    .qr-left input[type="text"] {
        width: 100%;
        padding: 10px;
        margin-bottom: 20px;
        border: 1px solid #ddd;
        border-radius: 4px;
        box-sizing: border-box;
    }
    .qr-left button {
        width: 100%;
        padding: 10px;
        background-color: #4CAF50;
        color: white;
        border: none;
        border-radius: 4px;
        font-size: 1.1rem;
        cursor: pointer;
    }
    .qr-left button:hover {
        background-color: #45a049;
    }
    .qr-right {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
    }
    .qr-image {
        display: block;
        margin: 20px auto;
        max-width: 100%;
        height: auto;
    }
    .info-text {
        margin-top: 10px;
        font-size: 0.9rem;
        color: #555;
        text-align: center;
    }
    .error-message {
        position: fixed;
        top: 280px;
        left: 50%;
        transform: translateX(-50%);
        background-color: #f44336;
        color: white;
        padding: 10px;
        border-radius: 5px;
        font-size: 1rem;
        z-index: 9999;
        opacity: 1;
        transition: opacity 0.5s ease-in-out;
        visibility: visible;
    }
    @media (max-width: 768px) {
        .qr-container {
            flex-direction: column;
        }
    }
</style>

<script>
    window.onload = function() {
        var errorMessage = document.getElementById('error-message');
        if (errorMessage) {
            setTimeout(function () {
                errorMessage.style.opacity = 0;
                setTimeout(function () {
                    errorMessage.style.visibility = 'hidden';
                }, 500);
            }, 5000);
        }
    }
</script>

3. 说明:

  • 步骤 1: 在页面顶部通过 include 引入 phpqrcode 库。
  • 步骤 2: 获取页面 URL 参数,url 为你希望生成二维码的链接,如果没有传入 url 参数,默认为 https://www.example.com。
  • 步骤 3: 使用 QRcode::png() 方法生成二维码,并将其保存到临时目录 temp_qr 中。
  • 步骤 4: 显示生成的二维码图片。

4. 使用方法:

  1. 将 phpqrcode 库的文件夹放置在你的项目目录下。
  2. 将上面的 generate_qr.php 文件放到你的 PHP 服务器上。
  3. 通过浏览器访问 generate_qr.php?url=你的链接,例如:
http://localhost/generate_qr.php?url=https://www.example.com
  1. 这样你就能看到生成的二维码,点击链接可以生成不同链接的二维码。

5. 示例:

  • 访问链接 http://localhost/generate_qr.php?url=https://www.google.com,页面会显示一个指向 Google 网站的二维码。

通过这种方式,你就可以在PHP环境中生成一个动态的二维码页面了,扫描二维码后,用户会被引导到指定的链接。