🧑💻 Cómo crear un generador de códigos QR con PHP paso a paso (guía completa)
Introducción
Los códigos QR son una herramienta simple… pero muy potente.
Los ves en todos lados:
- menús digitales
- pagos
- eventos
- apps
- marketing
Y aunque existen miles de generadores online, crear uno propio tiene muchas ventajas:
- control total
- integración con tus sistemas
- automatización
- personalización
En este tutorial vas a aprender:
- cómo generar códigos QR con PHP
- qué librerías usar
- cómo estructurar el código
- cómo generar imágenes (PNG/SVG)
- cómo integrarlo en un proyecto real
👉 Todo paso a paso, desde cero.
🧠 Cómo se genera un código QR
Antes de programar, es importante entender la lógica:
- defines el contenido (URL, texto, etc.)
- ese contenido se codifica
- se convierte en un patrón visual
- se renderiza como imagen
👉 PHP no lo hace “de fábrica”, necesitas una librería.
📦 Librerías para generar QR en PHP
Las más usadas:
- Endroid QR Code (recomendada)
- Bacon QR Code
- PHP QR Code (más antigua)
👉 En este tutorial usamos:
Endroid QR Code (moderna, flexible y fácil)
⚙️ Instalación con Composer
composer require endroid/qr-code
📁 Estructura básica del proyecto
Puedes empezar así:
qr/ ├── index.php ├── generate.php └── vendor/
🧪 Ejemplo básico: generar un QR
Archivo: generate.php
<?php
require __DIR__ . '/vendor/autoload.php';
use Endroid\QrCode\Builder\Builder;
use Endroid\QrCode\Writer\PngWriter;
$data = "https://floopware.com";
$result = Builder::create()
->writer(new PngWriter())
->data($data)
->size(300)
->margin(10)
->build();
header('Content-Type: ' . $result->getMimeType());
echo $result->getString();
🔍 Qué hace este código
- toma un texto o URL
- genera un QR
- lo devuelve como imagen PNG
- lo muestra directamente en el navegador
🧰 Crear un formulario para generar QR
Archivo: index.php
<form method="POST" action="generate.php"> <input type="text" name="data" placeholder="Introduce un enlace o texto" required> <button type="submit">Generar QR</button> </form>
🧪 Adaptar generate.php para POST
$data = $_POST['data'] ?? 'https://floopware.com';
👉 Ya tienes un generador funcional.
🖼️ Descargar el QR como imagen
Para descargar:
header('Content-Disposition: attachment; filename="qr.png"');
👉 Esto fuerza la descarga.
🎨 Personalización del QR
Puedes cambiar:
Tamaño
->size(400)
Margen
->margin(20)
Colores
->foregroundColor(new Color(0, 0, 0)) ->backgroundColor(new Color(255, 255, 255))
Formato SVG
use Endroid\QrCode\Writer\SvgWriter;
👉 útil para diseño profesional
📶 Ejemplo: QR para WiFi
$data = "WIFI:T:WPA;S:MiRed;P:12345678;;";
💬 Ejemplo: QR para WhatsApp
$data = "https://wa.me/34600000000";
📇 Ejemplo: QR para contacto (vCard)
$data = "BEGIN:VCARD VERSION:3.0 FN:Irak Quesada TEL:600000000 EMAIL:irak@mail.com END:VCARD";
⚠️ Validación de datos (muy importante)
Nunca confíes en input directo:
$data = trim($_POST['data'] ?? '');
if (empty($data)) {
exit("Dato inválido");
}
🔐 Seguridad básica
- limitar tamaño de input
- sanitizar datos
- evitar inyecciones
- no procesar datos peligrosos
🚀 Integración en proyectos reales
Puedes usar esto para:
- generar QR dinámicos
- sistemas de tickets
- menús digitales
- acceso a usuarios
- enlaces personalizados
🧠 Mejora PRO
Puedes guardar datos en BD:
qr_logs - id - data - created_at
👉 útil para analítica
⚡ Optimización
- cachear QRs generados
- usar CDN
- evitar regenerar mismo QR
❌ Errores comunes
- no validar input
- generar QR demasiado pequeños
- no probar escaneo
- no optimizar imágenes
- no pensar en móvil
🧩 Conclusión
Crear un generador de QR con PHP es más fácil de lo que parece.
Pero hacerlo bien implica:
- buena estructura
- validación
- optimización
- UX
Y eso es lo que marca la diferencia.
🔗 Relación con herramienta real
Si no quieres programarlo desde cero, puedes usar:
👉 https://floopware.com/floopware_generador_qr_free.php
🔜 Siguiente lectura recomendada:
👉 cómo integrar QR en proyectos
👉 usos avanzados en desarrollo