Як згенерувати QR-код на PHP 8 без сторонніх сервісів та реклами
Універсальність QR-кодів сьогодні важко переоцінити: від меню у ресторанах та оплати послуг до шерингу посилань і візитівок. Але якщо вам, як розробнику, потрібно додати таку функціональність на сайт, ви точно стикалися з однією проблемою.
Більшість безкоштовних онлайн-генераторів або конструкторів QR-кодів мають підводні камені. Вони або лімітують кількість сканувань, або "вшивають" власну рекламу перед перенаправленням, або взагалі вимагають грошей за базовий функціонал.
Виникає логічне питання: навіщо платити або терпіти чужу рекламу, якщо можна написати свій код на PHP буквально за кілька хвилин? У цій статті ми розберемо, як створити власний, повністю безкоштовний і незалежний генератор QR-кодів на PHP 8 за допомогою перевіреної бібліотеки та мінімуму рядків коду.
Чому варто реалізувати генерацію на своєму сервері?
Повна незалежність: Ваш код працює завжди, незалежно від сторонніх API чи сторонніх сервісів.
Безпека та приватність: Дані ваших користувачів (посилання, тексти) не передаються третім особам.
Жодної реклами чи лімітів: Створюйте стільки кодів, скільки потрібно, без обмежень на сканування.
Швидкість роботи: PHP 8 демонструє чудову продуктивність, тому генерація відбувається миттєво.
Крок 1. Вибираємо інструмент
Можна, звісно, написати генератор з нуля, розібравшись у специфікації матричного кодування (специфікація ISO/IEC 18004). Але навіщо винаходити велосипед, якщо є потужна, чиста і сучасна бібліотека, яка підтримує PHP 8.x?
Я використовую популярний пакет chillerlan/php-qrcode. Він гнучкий, швидкий та дозволяє генерувати QR-коди у різних форматах (SVG, PNG, JPG і навіть просто в HTML-таблицю).
Встановлюємо бібліотеку через Composer:
Bash
composer require chillerlan/php-qrcode
Крок 2. Пишемо мінімальний код для генерації (PHP 8)
Давайте створимо простий скрипт, який приймає текст або посилання і відразу віддає готове зображення у форматі SVG. Формат SVG ідеально підходить для вебу, оскільки він чудово масштабується і важить лічені кілобайти.
Ось базовий приклад:
PHP
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use Chillerlan\QRCode\{QRCode, QROptions};
// 1. Дані, які ми хочемо зашити в QR-код (посилання або будь-який текст)
$data = 'Hello World!';
// 2. Налаштування (за бажанням, але для гнучкості краще створити)
$options = new QROptions([
'version' => 5, // Версія QR-коду (розмір матриці)
'outputType' => QRCode::OUTPUT_MARKUP_SVG, // Формат виводу
'eccLevel' => QRCode::ECC_L, // Рівень корекції помилок (L, M, Q, H)
]);
// 3. Ініціалізація та генерація
$qrcode = new QRCode($options);
$svgOutput = $qrcode->render($data);
// Виводимо результат у браузер
header('Content-Type: image/svg+xml');
echo $svgOutput;
Цього мінімуму (близько 15 діючих рядків коду) вже достатньо, щоб отримати чистий, валідний QR-код без стороннього сміття.
Крок 3. Додаємо інтерактивності (Генерація через форму)
Якщо ви хочете зробити повноцінний інструмент на своєму сайті (наприклад, для контент-менеджерів або користувачів), можна обгорнути цей код у просту HTML-форму.
Ось як буде виглядати готовий скрипт index.php:
PHP
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use Chillerlan\QRCode\{QRCode, QROptions};
$qrImage = null;
$textToEncode = $_POST['text_data'] ?? '';
if (!empty($textToEncode)) {
$options = new QROptions([
'version' => 7,
'outputType' => QRCode::OUTPUT_IMAGE_PNG, // Цього разу згенеруємо PNG base64
'eccLevel' => QRCode::ECC_M,
'connectPaths' => true,
]);
// Отримуємо зображення у форматі base64 для зручного вбудовування в тег <img>
$qrImage = (new QRCode($options))->render($textToEncode);
}
?>
<!DOCTYPE html>
<html lang="uk">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Власний генератор QR-кодів на PHP</title>
<style>
body { font-family: Arial, sans-serif; max-width: 500px; margin: 50px auto; padding: 20px; text-align: center; }
textarea { width: 100%; height: 80px; margin-bottom: 15px; padding: 10px; box-sizing: border-box; }
button { background: #007bff; color: white; padding: 10px 20px; border: none; cursor: pointer; border-radius: 5px; }
button:hover { background: #0056b3; }
.result { margin-top: 30px; }
</style>
</head>
<body>
<h2>Генератор QR-кодів</h2>
<p>Введіть посилання або текст, щоб згенерувати чистий QR-код без реклами.</p>
<form method="POST">
<textarea name="text_data" placeholder="Введіть ваше посилання тут..." required><?= htmlspecialchars($textToEncode) ?></textarea>
<button type="submit">Згенерувати код</button>
</form>
<?php if ($qrImage): ?>
<div class="result">
<h3>Ваш QR-код:</h3>
<img src="<?= $qrImage ?>" alt="Згенерований QR код">
<p><small>Клікніть правою кнопкою миші, щоб зберегти зображення.</small></p>
</div>
<?php endif; ?>
</body>
</html>
Результат роботи коду
Ось такий вигляд має чистий, згенерований за цим алгоритмом QR-код, який веде на наш корисний інструмент: |
|
Висновок
Як бачите, сучасний PHP 8 та екосистема Composer дозволяють вирішувати подібні завдання за лічені хвилини. Навіщо залежати від чиїхось хмарних сервісів, платити за підписки чи змушувати своїх клієнтів дивитися рекламу під час сканування?
Використовуйте цей підхід у своїх CRM, інтернет-магазинах чи на блогах, кастомізуйте кольори (бібліотека це дозволяє) та тримайте повний контроль над своїм кодом!
