Skip to main content

PHP – Come estrarre il contenuto XML da un file XML.P7M (CAdES, Fattura PA)

Qualche giorno fa mi è stato chiesto di preparare un paio di pagine PHP per estrarre il contenuto di una serie di file XML relativi a fatture elettroniche per la Pubblica Amministrazione, realizzati cioè seguendo il formato definito dall’Agenzia delle Entrate e noto con il nome di Fattura PA. Si trattava di un lavoro semplice, nel corso del quale mi sono trovato a dover risolvere molto rapidamente – per ragioni legate ai tempi di consegna – due problemi non banali: estrarre il contenuto XML da una serie di file .xml.p7m firmati digitalmente ed eliminare dal contenuto i caratteri non UTF8 nel contenuto XML.

Dovendo concludere lo sviluppo rapidamente ho deciso di risolvere entrambe le problematiche allineandomi a uno dei più famosi luoghi comuni che, non senza un fondo di verità, accompagnano da sempre le caratteristiche del linguaggio PHP: il fatto che si tratta di un “double clawed hammer”, ovvero di un martello a due penne (e nessuna testa). In questo articolo ci occuperemo del primo argomento, rimandando il secondo a tempi migliori (UPDATE: alla fine l’ho scritto! Se vi interessa leggerlo, fate click qui).

Immagine di un lavoro originale realizzato da Ian Baker. Altre foto di questa meravigliosa opera sono disponibili sulla sua pagina Flickr: https://www.flickr.com/photos/raindrift/sets/72157629492908038

Per quanto riguarda l’estrazione XML dal P7M ho approfittato del fatto che tutte le fatture erano state firmate digitalmente utilizzando il formato CAdES, il quale – come forse già sapete – prevede l’aggiunta al file originale di un header PKCS#7 in testa e di una signature info in coda, lasciando il contenuto in mezzo intalterato. Questo consente di rimuovere entrambi, a patto di riuscire a localizzare l’esatta posizione del contenuto che si desidera preservare. Nel caso di un file XML questo è fortunatamente piuttosto semplice. E’ importante sottolineare come procedere in questo modo non ci dà nessuna garanzia sulla bontà della firma digitale stessa, che viene scartata senza alcuna verifica. Nel caso specifico, trattandosi di documenti già verificati alla fonte e archiviati digitalmente a monte del mio visualizzatore, io ho potuto farne a meno senza problemi. Al tempo stesso, suggerisco di prestare la massima attenzione al proprio ambito di uso: se avete bisogno di verificare l’autore del file è senz’altro opportuno utilizzare un metodo diverso che tenga in considerazione la firma del mittente.

Approfondisci

Errore PHP 500 – Cannot start php-cgi.exe – MSVCR110.dll is missing – Come risolvere

Installare PHP su una macchina Windows Server è piuttosto semplice, specialmente se si utilizzano i pacchetti di installazione ufficiali o (ancora meglio, nel caso in cui si intende utilizzare IIS come Web Server) l’eccezionale strumento denominato PHP Manager, disponbile tramite Web Platform Installer, di cui abbiamo già avuto modo di parlare in questa occasione.

Approfondisci

Guida all’installazione di PHP Manager per IIS su Windows Server o Windows 10

Se siete degli affezionati utilizzatori di PHP su piattaforma Windows e Web Server IIS è probabile che già conosciate PHP Manager per IIS, un eccellente strumento gratuito che si integra con l’interfaccia utente dello strumento di amministrazione di IIS – ovvero IIS Manager – e che può essere utilizzato per svolgere una serie di funzioni utili, tra cui soprattutto le due seguenti:

  • Gestire le istanze/versioni/build di PHP a 32-bit e 64-bit installate sulla macchina.
  • Accedere e modificare i relativi file di configurazione PHP.INI.

Installare PHP Manager per IIS è molto semplice: basta lanciare il  Web Platform Installer dall’interfaccia di IIS Manager, quindi cercarlo tra gli strumenti gratuiti disponibili tramite la casella di ricerca.

Approfondisci

Come impedire a MailPoet di contare gli utenti WordPress come Subscriber e far funzionare correttamente le limitazioni della versione gratuita

Non c’è operatore, gestore o amministratore WordPress che non conosca MailPoet, precedentemente noto come WYSIJA: per dirla in breve, si tratta di uno dei più sofisticati plugin WordPress per la gestione delle newsletter, utilizzato da migliaia – se non milioni – di siti e blog in tutto il mondo per la sua grande quantità di opzioni e funzionalità.

Personalmente ritengo MailPoet un plugin assolutamente eccezionale: fa parte di quella esigua lista di plugin che includo in quasi tutte le installazioni WordPress che mi capita di gestire o amministrare (inclusa questa). Nella maggior parte dei casi si tratta di siti piccoli: in alcuni casi – quando gli utenti e i subscriber delle newsletter sono migliaia – ho anche consigliato l’acquisto della licenza premium, non soltanto perché si tratta di un prodotto ampiamente meritevole del supporto degli utenti, ma anche perché… beh, perché la licenza gratuita ha una limitazione di 2000 subscriber, raggiunti i quali occorre pagare. Il plugin ha anche un counter interno che provoca la disabilitazione di tutte le newsletter quando il numero dei sottoscrittori raggiunge o supera i 2000.

Come ho detto, ritengo MailPoet un componente eccezionale… ad eccezione di un singolo, grande difetto: il subdolo stratagemma che gli sviluppatori hanno ideato per spingere l’amministratore WordPress a pagare per attivare la licenza premium, anche quando non ne ha alcun bisogno reale.

Approfondisci

Mantis Bug Tracker – Abilitare e disabilitare le notifiche via E-Mail

Se siete capitati su questo articolo è probabile che conosciate bene Mantis Bug Tracker,  noto anche come MantisBT, uno dei più noti e diffusi strumenti di bug tracking presenti sul mercato. Si tratta di un prodotto scritto in PHP, estremamente versatile e molto semplice da configurare – oltre ad essere completamente Open-Source, cosa che di certo non guasta. Nell’improbabile caso in cui non lo conosciate, vi invitiamo a scoprire di più sul suo funzionamento visitando la pagina ufficiale del progetto.

 

Lo scopo di questo articolo è quello di aiutare quanti si scontrano con uno dei problemi di configurazione più frequenti con cui si scontrano gli amministratori di Mantis, ovvero la gestione delle notifiche via e-mail. Il sistema, come ogni bug-tracker che si rispetti, consente di inviare e-mail agli utenti che seguono le varie anomalie in conseguenza di vari eventi che possono verificarsi, tra cui: la creazione di una nuova anomalia, il cambio di stato di una anomalia, la chiusura di una anomalia, e via dicendo.

Il problema

L’invio di queste notifiche può essere configurato dall’utente e/o dall’amministratore mediante un sistema di impostazioni “a cascata”, il cui funzionamento non è però del tutto immediato: in altre parole, non è sempre facile – sia per gli utenti che per gli amministratori – comprendere come mai, a seguito di determinate impostazioni, l’utente continui a ricevere (o a NON ricevere) le notifiche attese al verificarsi degli eventi che si crede di aver abilitato e/o autorizzato.

 

Approfondisci

Close