Scanner codici a barre con PHP e un'app da $10

Perché farlo
Collegare i codici a barre al database aziendale permette di:
- trovare rapidamente la posizione di un prodotto in magazzino;
- confrontare prezzo per unità e prezzo per confezione;
- semplificare inventari e operazioni in mobilità senza investire in scanner dedicati.
Questa guida mostra una soluzione pratica, economica e facilmente replicabile in ambienti che usano PHP (ad es. WordPress).
Importante: la soluzione descritta si basa su app di terze parti (Pic2Shop PRO) e su PHP/WordPress. Se usi un CMS o un framework diverso, i concetti restano validi ma i dettagli della query e delle API cambiano.
Requisiti
- conoscenze di base di PHP;
- accesso al server/webroot per caricare una pagina PHP (es. barcode.php);
- database (qui usiamo WordPress come esempio) che contiene un campo custom con il codice a barre;
- un dispositivo mobile con fotocamera e Pic2Shop PRO (iOS/Android, app intorno ai $10).
Dati di partenza
In questo esempio scannerizzeremo il codice a barre di un gioco da tavolo e recupereremo la recensione corrispondente sul sito. La procedura richiede che nei metadati del post (custom field) sia presente il codice a barre — es.: 0655132002387 per il gioco “San Juan”.
Il workflow è:
- Scannerizzare il codice con l’app;
- l’app invia il valore via HTTP a una URL configurata sul tuo server;
- la pagina PHP cerca nel database il post con quel codice e risponde con il link o i dati.
Copia il valore letto nel campo custom del post (nella demo: campo barcode):
Implementazione: la pagina PHP (barcode.php)
Crea nel webroot un file chiamato barcode.php. Per iniziare, inserisci questo test minimo per verificare che l’app raggiunga il server:
Configura nell’app il “Lookup URL” così:
http://YOUR_SITE_URL.COM/barcode.php?code=CODE
Quando scannerizzi, il placeholder CODE verrà sostituito dall’app con il valore reale del codice letto. Dovresti vedere un array con i parametri inviati.
Ricerca del post tramite meta
Dopo il test, sostituisci il file con la logica per trovare il post che ha il campo barcode corrispondente e ottenere il permalink:
'post',
'meta_key' => 'barcode',
'meta_value' => $code,
'meta_compare' => '='
));
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
$url = get_permalink();
echo $code . "\n";
echo $url;
}
wp_reset_postdata();
} else {
echo 'No entry for game ' . esc_html($code) . ' exists yet';
}
?>Note tecniche:
- uso
sanitize_text_field/esc_htmlper mitigare input malevoli; WP_Queryè preferibile aquery_postsper evitare effetti collaterali globali.
Distribuire automaticamente la configurazione sull’app
Digitare manualmente l’URL su centinaia di telefoni è poco pratico. Pic2Shop PRO supporta una URL di configurazione che, se aperta nel browser mobile, imposta l’app automaticamente:
p2spro://configure?lookup=http%3A//ipadboardgames.org/barcode.php?code=CODELa parte %3A è la codifica URL per :. Sostituisci ipadboardgames.org/barcode.php con il tuo dominio. Offri questo link ai tuoi operatori: aprendolo su dispositivi con Pic2Shop installato, l’app verrà configurata automaticamente.
Varianti e alternative
- App alternative: iCody (solo iOS) è più economica ma meno cross-platform. Altre app possono usare formati di callback diversi (POST invece di GET).
- Android: su Android potresti usare intent custom o app che supportano deep link simili.
- API REST: invece di una pagina che stampa URL, puoi restituire JSON strutturato con dettagli prodotto (nome, SKU, prezzo, link) per app più avanzate.
- Lettura multi-codice: se gestisci confezioni con più SKU, considera la memorizzazione di relazioni 1:N tra barcode e prodotto.
Sicurezza, privacy e GDPR
- Tratta i dati scannerizzati come input non fidato: validali e sanitizzali prima di usare in query o output.
- Se l’app invia anche informazioni sul dispositivo o la posizione, valuta se questa raccolta di dati rispetta la normativa sulla privacy. Mantieni un registro minimo e informa gli utenti su quali dati vengono trasferiti.
- Usa HTTPS in produzione per evitare sniffing dei codici inviati via rete.
Checklist di distribuzione (ruoli)
- IT/Amministratore:
- caricare
barcode.phpnel webroot; - assicurarsi che il server usi HTTPS;
- aggiungere logging e monitoraggio delle chiamate;
- caricare
- Content Manager:
- popolare il custom field
barcodeper i prodotti/post; - verificare corrispondenza tra EAN/UPC e database;
- popolare il custom field
- Operatori di magazzino:
- installare Pic2Shop PRO;
- aprire il link di configurazione per impostare il lookup URL;
- testare con 5-10 articoli reali.
Criteri di successo
- scansione di un codice restituisce il link al prodotto in meno di 2 secondi;
- almeno il 90% dei prodotti principali ha il campo
barcodepopolato; - nessun dato sensibile trasmesso senza cifratura (HTTPS).
Troubleshooting rapido
- Nessuna risposta dal server: verifica che
barcode.phpsia raggiungibile via browser e che non ci siano blocchi firewall. - Valore
CODEvuoto: controlla la configurazione dell’app e la sintassi del lookup URL. - Più risultati trovati: assicurati che i codici siano univoci o estendi la logica per restituire una lista.
Esempio di risposta JSON (opzionale)
Se preferisci restituire JSON (per app personalizzate), modifica la pagina così:
$code, 'found' => false);
$query = new WP_Query(array(
'post_type' => 'post',
'meta_key' => 'barcode',
'meta_value' => $code,
'meta_compare' => '='
));
if ($query->have_posts()) {
$response['found'] = true;
$response['posts'] = array();
while ($query->have_posts()) {
$query->the_post();
$response['posts'][] = array(
'title' => get_the_title(),
'permalink' => get_permalink(),
'barcode' => get_post_meta(get_the_ID(),'barcode',true)
);
}
wp_reset_postdata();
}
echo json_encode($response);
?>Quando questa soluzione NON è adatta
- se hai bisogno di scansioni ad alta velocità in ambienti industriali (meglio scanner industriali dedicati);
- se il dispositivo deve funzionare offline in modo affidabile (richiede sincronizzazione e gestione cache);
- se la sicurezza dei dati è critica e non puoi usare app di terze parti: in tal caso sviluppa un’app interna con crittografia end-to-end.
Riepilogo
Questa soluzione è economica, rapida da implementare e utile per molte piccole imprese: usa un’app mobile per la scansione e una pagina PHP che interroga il database per restituire i dati rilevanti. Con pochi accorgimenti su sicurezza, validazione e distribuzione automatizzata del lookup URL puoi rendere il processo scalabile.
Azione consigliata
- popola i campi
barcodeper una selezione di prodotti; - carica
barcode.phpe testa con Pic2Shop su un device; - una volta stabile, distribuisci il link di configurazione ai terminali del magazzino.
FAQ
Posso usare un’app diversa da Pic2Shop?
Sì, ma verifica il formato della callback (GET vs POST) e la sintassi del deep link; adegua la pagina PHP di conseguenza.
È possibile inviare la scansione via POST invece che GET?
Dipende dall’app. Alcune app consentono POST; in quel caso leggi php://input o $_POST invece di $_GET.
Come gestisco più codici per lo stesso prodotto?
Memorizza relazioni 1:N (tabella di mapping) o salva i codici in un campo serializzato/structured e adatta la query.
Spero che questa guida ti aiuti a trasformare smartphone economici in strumenti pratici per il tuo inventario. Lascia un commento se provi la procedura o hai bisogno di aiuto per adattarla al tuo sistema.