QR Code PHP – creazione, esempio e download

In questo articolo del blog vedremo come creare QR Code in PHP dinamico e salvarlo in locale come immagine in formato png, con un esempio pratico. I codici QR stanno giocando un ruolo importante in molti settori come l’e-commerce, la prenotazione di biglietti, il pagamento online.

Indice dei contenuti

Cosa sono i QR Code?

I codici QR (Quick Response Codes) sono codici a barre bidimensionali che memorizzano le informazioni attraverso una serie di pixel in una griglia di forma quadrata e che possono essere letti facilmente da un dispositivo digitale, come la fotocamera del tuo smartphone, .

I QR Code vengono spesso utilizzati per tenere traccia delle informazioni sui prodotti e, poiché molti smartphone dispongono di lettori QR integrati, vengono spesso utilizzati nelle campagne di marketing e pubblicitarie. Più recentemente, hanno svolto un ruolo chiave nell’aiutare a tracciare l’esposizione al coronavirus e rallentare la diffusione del virus.

Prerequisiti per generare QR Code con PHP in modo dinamico

In questo articolo, spiegherò i passaggi necessari per generare un codice QR dinamico utilizzando php. Per poter creare un QR Code è necessario prima scaricare una libreria che ci aiuterà nel nostro compito. Sono disponibili varie librerie di terze parti per la generazione di codici QR in PHP.

Io utilizzo la libreria PHP QR Code in quanto l’utilizzo di questa libreria è molto semplice e si adatta perfettamente un po a tutte le esigenze.

Funzionalità della libreria

Ma cos’è PHP QR Code? E’ una libreria open source (LGPL) per la generazione di QR Code, codice a barre bidimensionale. Basato sulla libreria libqrencode C, fornisce API per la creazione di immagini di codici a barre QR Code (PNG, JPEG grazie a GD2). Implementato esclusivamente in PHP.

Supports QR Code versions (size) 1-40

Numeric, Alphanumeric, 8-bit and Kanji encoding.

Implemented purely in PHP, no external dependencies except GD2

Exports to PNG, JPEG images, also exports as bit-table

TCPDF 2-D barcode API integration

Easy to configure

Data cache for calculation speed-up

Debug data dump, error logging, time benchmarking

Provided merge tool helps deploy library as a one file

new! API documentation

new! Over 30 detailed examples

100% Open Source, LGPL Licensed

Download libreria PHP QR Code

Prima di tutto dobbiamo scaricare la libreria: Scarica la libreria QR Code PHP utilizzando il link sottostante. https://sourceforge.net/projects/phpqrcode/files/ Il file che andrete a scaricare si chiama phpqrcode-2010100721_1.1.4.zip. Dopo il download, estrarre il file zip.

A questo punto, ho creato una cartella denominata phpqrcode all’interno della quale ho scompattato i files della libreria.

Ecco i files contenuti nella libreria:

fabioiegri@PC-MBP-Fabio phpqrcode % ls
CHANGELOG	README		cache		qrbitstream.php	qrencode.php	qrlib.php	qrspec.php	tools INSTALL		VERSION		index.php	qrconfig.php	qrimage.php	qrmask.php	qrsplit.php LICENSE		bindings	phpqrcode.php	qrconst.php	qrinput.php	qrrscode.php	qrtools.php
ShellScript

Come funziona la libreria – Sintassi

Vediamo ora la sintassi della funzione PHP messa a disposizione della libreria e che ci permetterà di generare il nostro QR Code.

QRcode::png($text, $file, $ecc, $pixel_size, $frame_size);
PHP

Cosa rappresentano le variabili che dobbiamo dare in pasto alla funzione? Vediamo nel dettaglio.

  • $text => Parametro obbligatorio. Questi parametri verranno utilizzati per generare il codice QR e memorizzare le informazioni.
  • $file => PATH local in cui andremo a salvare l’immagine del codice QR generato.
  • $ecc => Capacità di correzione degli errori. Vengono utilizzati i seguenti valori. L, M, Q e H.
  • $pixel_size => Dimensione in pixel del QR Code.
  • $frame_size => Dimensione del codice QR. Vengono utilizzati valori da 0 a 10.

$text è il parametro che conterrà le informazioni che verranno poi contenute nel QR Code che andremo a generare.

Creare QR Code con PHP esempio

Come detto in precedenza, abbiamo salvato la libreria necessaria alla generazione di QR Code in /phpqrcode.

Ora creiamo il nostro file php includendo la libreria necessaria:

<?php
    require_once("PATH_TOphpqrcode/qrlib.php");
    $file= "/PATH_TO_DOCUMENT_ROOT/images/qrcode.png";
    $ecc = "H";
    $pixel_size= "100";
    $frame_size = "2";
    $item = "https://iegri.com";
    QRcode::png($item, $file, $ecc, $pixel_size, $frame_size);
?>
PHP

nel caso in cui il codice non stia funzionando, andate alla sezione Risoluzione errori.

Ovviamente dovrete adeguare le righe 2 e 4 ai path presenti sul vostro File System.

Per farvi un esempio ho creato un file chiamato https://iegri.com/qrcodegenerator.php.

Creare QR Code in PHP con parametri dinamici

Nel caso in cui si vogliano creare dei QR Code dinamici con PHP sarà sufficiente inserire delle variabili all’interno del file, prendendo i valori dei parametri, per esempio in GET dalle query string. Vediamo un esempio:

<?php
    require_once("PATH_TOphpqrcode/qrlib.php");
    if(isset($_GET['item'])){
      $item =$_GET['item_'];
    }
    $file= "/PATH_TO_DOCUMENT_ROOT/images/".$item.".png";
    $ecc = "H";
    $pixel_size= "100";
    $frame_size = "2";
    QRcode::png($item, $file, $ecc, $pixel_size, $frame_size);
?>
ShellScript

Tornando all’esempio preparato da me per questo articolo, ovvero la pagina https://iegri.com/qrcodegenerator.php, sarà sufficiente richiamarla con la url: https://iegri.com/qrcodegenerator.php?item=test-qr-code.

il Valore di $item sarà impostato a test-qr-code, così come il nome dell’immagine. Quindi inquadrando il QR Code leggeremo al suo interno, il testo test-qr-code e l’immagine sarà salvata come: /PATH_TO_DOCUMENT_ROOT/images/test-qr-code.png.

Salvataggio dell’immagine QR Code in locale

Relativamente al codice precedente, la riga 3 rappresenta il PATH del file system e il nome del file del file che andremo a scrivere. E’ quindi importante che il PATH scelto esista e che l’utente che fa girare il processo Apache possa scriverci.

Per visualizzare l’imagine saltata, potete aggiornare il codice precedente nel modo seguente:

<html>
    <head>
        <title>Esempio Generatore QR Code con PHP</title>
        <meta name="robots" content="noindex">
    </head>
    </body>
        <?php
            require_once("PATH_TOphpqrcode/qrlib.php");
            $file= "/PATH_TO_DOCUMENT_ROOT/images/qrcode.png";
            $ecc = "H";
            $pixel_size= "100";
            $frame_size = "2";
            $item = "https://iegri.com";
            QRcode::png($item, $file, $ecc, $pixel_size, $frame_size);

            echo '<img src="/PATH_TO_DOCUMENT_ROOT/images/qrcode.png" width="150">';
        ?>
    </body>
</html>
PHP

Risoluzione errori

Quanto detto finora dovrebbe funziona senza problemi. In alcune circostanze però, l’immagine con il QR Code potrebbe non essere creata. Andiamo a vedere quali sono i casi che potrebbero portare alla mancata creazione del QR Code con PHP.

[Tue Mar 14 11:56:11.922599 2023] [php:error] [pid 850672] [client xxx.xxx.xxx.xxx:56854] PHP Fatal error:  Uncaught Error: Call to undefined function ImageCreate() in /PATH_TO_DOCUMENT_ROOT/phpqrcode/qrimage.php:74\nStack trace:\n#0 /PATH_TO_DOCUMENT_ROOT/phpqrcode/qrimage.php(32): QRimage::image()\n#1 /PATH_TO_DOCUMENT_ROOT/phpqrcode/qrencode.php(494): QRimage::png()\n#2 /PATH_TO_DOCUMENT_ROOT/phpqrcode/qrencode.php(286): QRencode->encodePNG()\n#3 /PATH_TO_DOCUMENT_ROOT/qrcodegenerator.php(8): QRcode::png()\n#4 {main}\n  thrown in /PATH_TO_DOCUMENT_ROOT/phpqrcode/qrimage.php on line 74

La libreria per funzionare necessità della GD Library, senza la quale non sarà possibile creare l’immagine e quindi salvarla in locale.

Installare GD Library

Quindi, per installare la GD Library su Debian e Ubuntu sarà sufficiente lanciare il comando:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install phpX.X-gd
ShellScript

A tal riguardo però è importante specificare che il comando sudo apt-get install phpX.X-gd va modificato in base alla versione di PHP che state utilizzando. Se per esempio il vostro server utilizza la versione 8.0 di PHP, il comando da lanciare sarà:

sudo apt-get install php8.0-gd
ShellScript

Per visualizzare la versione di PHP che state utilizzando, sarà sufficiente lanciare il comando php -v.

A questo punto dovrete cercare il file php.ini che state utilizzando e cercare al suo interno la stringa:

;extension=gd;
ShellScript

e togliete il “;” all’inizio della riga. A questo punto riavviate Apache con il comando: systemctl restart apache2.

Nel caso in cui vogliate inserire i dati del QR CODE appena creato in un database, vi consiglio la nostra guida: Form PHP per inserire dati in database MYSQL

Contributo Video

Generating QR Code with PHP using phpqrcode library and save it on the server

Conclusioni

In conclusione, vi ho mostrato dove scaricare la libreria utile alla creazione di un Codice QR Code tramite PHP e come inserirla all’interno di una pagina PHP che ci permette anche di salvare il file appena creato in locale. Tutte le fasi sono abbastanza semplici da seguire. L’unica difficoltà, nel caso non abbiate accesso al server, sarà l’installazione della libreria GD.

Spero che l’articolo vi sia risultato utile, in tal caso, potreste condividerlo 🙂 .

Se avete dei dubbi o se volete condividere il vostro punto di vista, scrivete nei commenti e cercherò di rispondere al più presto.

Detto ciò , vi auguro una buona lettura.

Se volete restare in contatto, vi lascio anche il link della mia newsletter di LinkedIn.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *