norfipc.com
Códigos   Mapa del sitio   Informatica
NorfiPC » Códigos » Generador de QR code

Generador libre de Códigos QR en PHP para un sitio web

Actualizado: 17 de noviembre del 2022
Por: Norfi Carrodeguas
Script para insertar en una página un generador de Códigos de barra QR y facilitar a los lectores crear sus propias imágenes, introduciendo el texto.
Códigos de un generador de QR code en PHP para un sitio web
En otras páginas de nuestro sitio habrás visto generadores que los lectores usan para crear sus propios códigos QR.
Funcionan con la librería PHP QR Code, proyecto de código abierto, disponible libremente en sourceforge.net/.
En esta página comparto donde se puede obtener y el código necesario para insertar en una página de un sitio web el generador.


Crear un generador de Códigos QR con PHP QR Code


Para crear el generador de códigos accede a la página del proyecto en http://phpqrcode.sourceforge.net/ y en la sección Download descarga los archivos necesarios.
A continuación indico los requisitos y como insertar el generador.

Requisitos para crear el generador de códigos QR


Los requisitos para crear el generador son solo dos, un servidor que ofrezca soporte para PHP y que tenga habilitada la librería GL.
Existen dos opciones:
- Subir los archivos a cualquier servidor en la red.
- Instalar Apache con PHP en el equipo local, en este caso se podrá disponer de la función offline.
Lee más información sobre Apache y PHP.


Insertar el generador de códigos QR en una página


Hacer funcionar PHPQRCode no es difícil.
Si tienes conocimientos de PHP no necesitas leer más, el archivo que descargues contiene en su interior todo lo necesario, cada archivo incluye comentarios con explicación de su uso.
Si no sabes nada de PHP no te desanimes, sigue los siguientes pasos:
• Descomprime el archivo que descargues y extrae de su interior solo los archivos llamados: "index.php" y "phpqrcode.php"
• Crea una carpeta de nombre "generador-qr" y copia los archivos anteriores a su interior.
• Edita el archivo index.php con el Bloc de notas u otro editor de texto plano como Notepad++ o PSPad.
• Busca la línea 33 con el siguiente contenido:
include "qrlib.php";
Sustitúyela por:
include "phpqrcode.php";
• Es todo, guarda los cambios.
• Sube o mueve la carpeta generador-qr con sus archivos al servidor.
• Para iniciar el generador solo carga en un navegador web: http://servidor/generador-qr/index.php


Código completo con formulario para crear códigos QR


Más fácil aun y más completa es la siguiente opción.
El siguiente código lo hemos empleado en nuestro sitio durante mucho tiempo.
Incluye un formulario, el código para impedir la inyección de códigos SQL en la entrada y una imagen de verificación para impedir la validación automática.
✓ En la primera y segunda línea del código se hace referencia a la carpeta de nombre "temp" que se debe crear para albergar los archivos temporales.
✓ Se hace referencia al archivo "phpqrcode.php"
✓ Se hace referencia al archivo "image.php" que crea la imagen de verificación, el código para crearlo está más abajo.
<?php    
    $PNG_TEMP_DIR = dirname(__FILE__).DIRECTORY_SEPARATOR.'../temp'.DIRECTORY_SEPARATOR;
    $PNG_WEB_DIR = '../test/qr/temp/';   
    include "phpqrcode.php"; 
    if (!file_exists($PNG_TEMP_DIR))
        mkdir($PNG_TEMP_DIR);    
    $filename = $PNG_TEMP_DIR.'test.png';

    $errorCorrectionLevel = 'L';
    if (isset($_REQUEST['level']) && in_array($_REQUEST['level'], array('L','M','Q','H')))
        $errorCorrectionLevel = $_REQUEST['level'];    

    $matrixPointSize = 4;
    if (isset($_REQUEST['size']))
        $matrixPointSize = min(max((int)$_REQUEST['size'], 1), 10);

    if (isset($_REQUEST['data'])) { 

        if (trim($_REQUEST['data']) == '')
            die('No hay datos! <a href="?">Volver</a>');            

        $filename = $PNG_TEMP_DIR.'test'.md5($_REQUEST['data'].'|'.$errorCorrectionLevel.'|'.$matrixPointSize).'.png';        
    }     
    echo '<img src="'.$PNG_WEB_DIR.basename($filename).'" alt="Imagen con el código QR generado"><br><br>';  

    echo '<form action="" method="post"><div>		
Introduce los datos a codificar:<br><textarea rows="4" cols="58" class="ent" name="data">'.(isset($_REQUEST['data'])?htmlspecialchars($_REQUEST['data']):' ').'</textarea><br>		
        ECC:&nbsp;<select class="campos" name="level">
            <option value="L"'.(($errorCorrectionLevel=='L')?' selected':'').'>L - menor</option>
            <option value="M"'.(($errorCorrectionLevel=='M')?' selected':'').'>M</option>
            <option value="Q"'.(($errorCorrectionLevel=='Q')?' selected':'').'>Q</option>
            <option value="H"'.(($errorCorrectionLevel=='H')?' selected':'').'>H - el mejor</option>
        </select>&nbsp;
        Tamaño de la imagen:&nbsp;<select class="campos" name="size">';
        
    for($i=1;$i<=10;$i++)
        echo '<option value="'.$i.'"'.(($matrixPointSize==$i)?' selected':'').'>'.$i.'</option>';
        
    echo '</select><br>
	Introduce los caracteres que ves en la imagen<br>
	    <img style="margin-top:4px;" alt="Numeros aleatorios" src="../image.php">  
        <input class="campos" type="text" name="num"><br>
        <input class="campos" type="submit" value="GENERAR"></div>
		</form><br>';
 session_start(); 
$_REQUEST = (get_magic_quotes_gpc() ? array_map('stripslashes', $_REQUEST) : $_REQUEST); //satinizar
if($_SESSION['img_number'] != $_POST['num']){ 
  echo'<div style="color:red;">Los caracteres no se corresponden.<br> 
 Trate de nuevo por favor</div>'; 
}else{ 	
QRcode::png($_REQUEST['data'], $filename, $errorCorrectionLevel, $matrixPointSize, 2); 
}         
?> 
Copia el código anterior y pégalo en el lugar de la página donde debe mostrarse el formulario.
La página debe poseer la extensión .PHP


Código para crear el archivo en PHP que crea la imagen de verificación


<?php 
header("Content-type: image/png"); 
$string = "abcdefghijklmnopqrstuvwxyz0123456789"; 
for($i=0;$i<5;$i++){ 
    $pos = rand(0,36); 
    $str .= $string{$pos}; 
} 

$img_handle = ImageCreate (60, 22) or die ("Es imposible crear la imagen"); 
//Image size (x,y) 
$back_color = ImageColorAllocate($img_handle,102,102,153); 
//Background color RBG 
$txt_color = ImageColorAllocate($img_handle,255,255,255); 
//Text Color RBG 
ImageString($img_handle, 31, 5, 0, $str, $txt_color); 
Imagepng($img_handle); 

session_start(); 
$_SESSION['img_number'] = $str; 
?>  
Copia el código anterior, pégalo en un archivo de texto y renómbralo a: "image.php"
Mostramos los códigos en esta página usando el tema Desert de Prettify, un proyecto para resaltar el código en páginas web, disponible gratis en Github.
Lee más información detallada: Crear snipetts adaptables para mostrar código fuente en las páginas

Crear un generador de códigos QR en Javascript

En otro artículo de nuestro sitio puedes leer como hacer un formulario para crear los códigos empleando Javascript.
En este caso funciona perfectamente offline sin conexión a internet ya que JavaScript se ejecuta en el navegador web.
Lee como hacerlo y descarga gratis los archivos necesarios.
Como crear un generador de QR code en Javascript que funciona offline

Páginas relacionadas



Comparta esta página
Facebook
Twitter

Sígueme en las redes sociales


Norfipc en Facebook Norfipc en Twitter Canales RSS con las últimas publicaciones

 
Inicio | Mapa del sitio | Buscar | Sobre mí