🧑‍💻 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:

  1. defines el contenido (URL, texto, etc.)
  2. ese contenido se codifica
  3. se convierte en un patrón visual
  4. 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



Volver al post pilar:


Códigos QR: qué son, cómo funcionan y cómo usarlos en tu negocio o proyectos