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?
- Prerequisiti per generare QR Code con PHP in modo dinamico
- Creare QR Code con PHP
- Contributo Video
- Conclusioni
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
ShellScriptCome 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);
PHPCosa 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);
?>
PHPnel 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);
?>
ShellScriptTornando 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>
PHPRisoluzione 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
ShellScriptA 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
ShellScriptPer 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;
ShellScripte 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
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.
Principal Web Solutions Architect – Technology & Architecture Manager @ Accenture – Google Cloud Certified – Professional Cloud Architect
Parla di #web, #cloud, #websecurity, #webperformance e #webarchitecture