Database Manager Back Office — Adminer per PrestaShop: installazione, configurazione, risoluzione dei problemi
Documentazione completa del modulo dfdbmanager: installare Adminer 5 nel back office PrestaShop 8 e 9, auto-login con credenziali del negozio, restrizione SuperAdmin, aggiornamento, risoluzione dei problemi.
Il modulo Database Manager Back Office (riferimento interno dfdbmanager) integra Adminer 5.4.2 direttamente nel back office di PrestaShop 8 e 9. Non c’è più bisogno di cPanel o phpMyAdmin esterno: un clic nel menu Parametri Avanzati > Adminer e gestisci il tuo database, già autenticato.
Requisiti
- PrestaShop: da 8.0.0 a 9.99.99 (testato su 8.0, 8.1, 8.2, 9.0)
- PHP: 7.4 o superiore (compatibile con 8.0, 8.1, 8.2, 8.3)
- Database: MySQL 5.7+ o MariaDB 10.3+
- Account dipendente: profilo SuperAdmin (id_profile = 1) per aprire Adminer
- Hosting: compatibile con hosting condiviso (o2switch, OVH, Infomaniak), VPS, dedicato
Nessuna connessione in uscita è richiesta dal tuo server: Adminer 5.4.2 è incorporato nello ZIP del modulo (508 KB, file singolo).
Installazione
1. Caricare lo ZIP
Nel tuo back office PrestaShop:
- Vai a Moduli > Gestore Moduli
- Clicca su Carica un modulo in alto a destra
- Trascina e rilascia il file
dfadminer-1.0.0.zipo clicca per selezionarlo - Attendi la fine del caricamento (qualche secondo — lo ZIP pesa meno di 400 KB)
- Il modulo si installa automaticamente
2. Verificare la scheda del menu
L’installazione crea automaticamente una scheda di menu sotto Parametri Avanzati > Adminer, con un’icona Material storage. La scheda è creata in cinque lingue (francese, inglese, spagnolo, tedesco, italiano) — la lingua attiva verrà mostrata in base al tuo profilo dipendente.
Primo accesso ad Adminer
Aprire il menu
Naviga a Parametri Avanzati > Adminer. Arrivi direttamente alla lista delle tabelle del tuo database PrestaShop, senza schermata di autenticazione, senza modulo da compilare.
La pagina si compone di:
- Un banner fisso in alto, in dark navy, con il nome del tuo database a sinistra e un pulsante blu Back to PrestaShop BO a destra
- L’interfaccia Adminer sotto: sidebar delle tabelle a sinistra, contenuto principale a destra
Auto-login: come funziona
Il modulo legge le credenziali del tuo database dalla configurazione PrestaShop (le costanti _DB_SERVER_, _DB_USER_, _DB_PASSWD_, _DB_NAME_ definite in config/parameters.php o config/settings.inc.php) e avvia la sessione Adminer lato server con queste credenziali prima che Adminer si carichi. Nessuna nuova password viene creata, nessun permesso MySQL viene esteso — Adminer usa esattamente gli stessi diritti di PrestaShop.
Pagina di configurazione del modulo
Da Moduli > Gestore Moduli, cerca Database Manager Back Office e clicca su Configura. La pagina offre tre sezioni.
Stato
Mostra:
- Versione di Adminer installata localmente (5.4.2 per impostazione predefinita)
- Percorso del file
adminer.phpnel modulo - Variante installata (Adminer completo o Adminer Editor)
- Dimensione del file
Aggiornare Adminer
Quando esce una nuova versione stabile di Adminer su adminer.org, puoi scaricarla direttamente da questa pagina. Clicca su Update to latest Adminer — il modulo recupera il file da adminer.org/latest-en.php via cURL (o file_get_contents come fallback) e sostituisce il file locale.
adminer.org in HTTPS. Su alcuni hosting condivisi molto restrittivi, le connessioni in uscita sono bloccate. In quel caso, scarica manualmente il file da adminer.org e sostituiscilo in modules/dfadminer/views/adminer/adminer.php via FTP.
Passare ad Adminer Editor
Adminer pubblica anche una variante Editor — l’interfaccia è identica ma il campo di esecuzione SQL grezzo è rimosso. Solo la navigazione nelle tabelle e la modifica delle righe restano disponibili. Utile se vuoi dare accesso a un profilo meno tecnico senza rischiare l’esecuzione di SQL libero.
Clicca su Switch to Adminer Editor per scaricare e sostituire il file. Puoi tornare ad Adminer completo in qualsiasi momento con Switch back to full Adminer.
Modello di sicurezza
Restrizione SuperAdmin
Adminer è uno strumento potente: chi ha accesso al tuo database ha accesso a tutto (ordini, clienti, pagamenti, password hashate dei dipendenti). Per questo motivo, il modulo restringe l’accesso al profilo SuperAdmin esclusivamente — cioè id_profile = 1 in PrestaShop.
Gli altri profili (Logista, Traduttore, Venditore, profili personalizzati) ricevono un messaggio Access Denied se tentano di aprire Adminer, anche se conoscono l’URL.
Doppia verifica lato server
La restrizione è applicata due volte lato server nel controller:
- In
postProcess()— prima che Adminer venga eseguito - In
initContent()— al rendering UI di fallback
Questa doppia verifica garantisce che nessun percorso di codice aggiri il gate, anche con un comportamento inaspettato del router PrestaShop.
Blocco dell’accesso HTTP diretto al file adminer.php
Il file views/adminer/adminer.php è bloccato all’accesso HTTP diretto tramite un .htaccess con la direttiva Require all denied. Tentare di aprire direttamente l’URL /modules/dfadminer/views/adminer/adminer.php restituisce un 403 Forbidden. L’unico modo di raggiungere Adminer è passare per il controller PrestaShop, che applica il gate SuperAdmin.
Usare Adminer per PrestaShop
Tabelle comuni da conoscere
Alcune tabelle frequentemente utili per il debug PrestaShop (prefisso ps_ per impostazione predefinita, può variare a seconda della tua installazione):
- ps_configuration — tutte le variabili di configurazione (chiave/valore)
- ps_orders — ordini
- ps_customer — clienti
- ps_product + ps_product_lang — prodotti e loro traduzioni
- ps_employee — dipendenti del BO
- ps_log — registro errori di PrestaShop
- ps_cart + ps_cart_product — carrelli
- ps_specific_price — promozioni e regole di prezzo
Eseguire una query SQL
Nella sidebar sinistra, clicca su SQL command. Digita la tua query, clicca su Execute. Adminer mostra il risultato sotto, con paginazione automatica per risultati grandi.
Esportare una tabella
Su una tabella data, clicca su Export. Adminer offre vari formati: SQL (con o senza dati), CSV, TSV. Per tabelle molto grandi, l’esportazione avviene in streaming chunked — nessun problema di memoria PHP.
Modificare una riga in loco
Su qualsiasi tabella, clicca su Select data, poi sulla matita a sinistra di una riga. Modifichi tutti i campi in un form e salvi con un clic. Adminer genera automaticamente la query UPDATE.
Più dipendenti SuperAdmin
Se hai diversi dipendenti con il profilo SuperAdmin, ognuno avrà la propria sessione Adminer indipendente. Concretamente:
- Il dipendente A apre Adminer nel suo browser — la sua sessione adminer_sid viene creata
- Il dipendente B fa lo stesso nel suo — la sua propria sessione adminer_sid viene creata
- Entrambi possono navigare Adminer in parallelo senza interferenza
- Quando A esce dal BO PrestaShop, la sua sessione Adminer rimane valida fino a quando chiude il browser (poi scade)
Tutti i dipendenti si connettono allo stesso database con le stesse credenziali di sistema — non ci sono account Adminer separati da gestire.
Aggiornare il modulo
Per aggiornare il modulo a una versione più recente:
- Scarica il nuovo ZIP dalla tua area cliente DataFirefly
- Nel BO, Moduli > Gestore Moduli
- Clicca su Carica un modulo e carica il nuovo ZIP
- PrestaShop rileva che esiste già una versione e propone di aggiornarla
- Conferma — il modulo viene aggiornato senza perdere la configurazione
Poiché non viene creata alcuna tabella DB, non c’è migrazione di schema da gestire tra versioni.
Disinstallazione
Per disinstallare correttamente il modulo:
- Vai a Moduli > Gestore Moduli
- Trova Database Manager Back Office
- Clicca su Disinstalla nel menu a discesa
La disinstallazione:
- Rimuove la scheda di menu Parametri Avanzati > Adminer
- Rimuove i file del modulo (incluso il file
adminer.phpincorporato) - Non tocca nessuna tabella — il tuo database PrestaShop rimane intatto
- Non modifica alcuna configurazione PrestaShop, nessuna password, nessun permesso
La disinstallazione è totalmente reversibile: reinstalla il modulo per riavere Adminer nello stesso stato.
Risoluzione dei problemi
La schermata di autenticazione di Adminer appare invece della lista delle tabelle
Sintomo: apri il menu Adminer e vedi il modulo di Autenticazione di Adminer (campi System, Server, Username, Password, Database) invece della lista delle tabelle.
Causa probabile: un vecchio cookie Adminer (da un’installazione precedente o un altro sito Adminer) interferisce con la sessione pre-popolata.
Soluzione:
- Apri le DevTools del tuo browser (F12)
- Vai alla scheda Application (Chrome) o Archiviazione (Firefox)
- Sezione Cookies, seleziona il tuo dominio
- Elimina i cookie chiamati
adminer_sid,adminer_permanent,adminer_keyeadminer_version - Ricarica la pagina Adminer con Ctrl+Shift+R
Errore 403 Forbidden al caricamento
Sintomo: la pagina Adminer restituisce uno stato HTTP 403, a volte con il modulo di autenticazione visibile sotto.
Causa probabile: Adminer non riconosce la sessione pre-popolata e cade nel suo code-path auth_error che aggiunge esplicitamente HTTP/1.1 403 Forbidden quando $_GET[username] è definito ma l’autenticazione fallisce.
Soluzione: stessa procedura di sopra — svuota i cookie Adminer dal browser. Se il problema persiste, verifica che le credenziali PrestaShop in config/parameters.php (PS9) o config/settings.inc.php (PS8) sono corrette e che PrestaShop riesce effettivamente a connettersi a MySQL (il BO PrestaShop funziona normalmente?).
I link di Adminer riportano alla dashboard PrestaShop
Sintomo: clicchi su un nome di tabella nella sidebar di Adminer e arrivi alla dashboard PrestaShop invece della pagina della tabella.
Causa probabile: il post-processing degli URL (che inietta controller=AdminDfAdminer negli URL interni di Adminer) non ha funzionato. Più spesso: una cache HTML o un proxy intermedio che serve una versione stale della pagina.
Soluzione:
- Svuota la cache di PrestaShop (Parametri Avanzati > Prestazioni > Svuota la cache)
- Svuota la cache del browser (Ctrl+Shift+R)
- Se c’è un CDN o una cache HTTP a monte (Cloudflare, Varnish), purga la sua cache per gli URL
/admin*/index.php
Modalità scura: il banner o Adminer non si adattano
Il banner del modulo si adatta automaticamente alla modalità scura del sistema tramite la media query @media (prefers-color-scheme: dark). Adminer 5 ha anche la propria modalità scura integrata che segue la stessa preferenza di sistema.
Se il rendering non segue la tua modalità di sistema:
- Verifica che il tuo OS sia realmente in modalità scura (Windows: Impostazioni > Personalizzazione > Colori > Modalità scura; macOS: Preferenze di Sistema > Generale > Aspetto: Scuro)
- Il browser deve trasmettere questa preferenza — per impostazione predefinita Chrome e Firefox lo fanno, ma alcune estensioni di gestione dei temi possono sovrascriverla
- Verifica con DevTools Rendering > Emulate CSS media feature prefers-color-scheme che la preferenza sia effettivamente dark
Invalid Security Token su un’azione di Adminer
Sintomo: esegui una query SQL o modifichi una riga, e PrestaShop mostra Invalid Security Token.
Causa probabile: questo messaggio normalmente non appare mai con il modulo — il controller sovrascrive checkToken() per bypassare il CSRF di PrestaShop sulle azioni interne di Adminer. Se lo vedi, è perché stai accedendo a un URL che non passa per il nostro controller.
Soluzione: verifica che l’URL nella barra del browser inizi con index.php?controller=AdminDfAdminer&token=.... Se inizia con index.php?select=... senza il parametro controller, il post-processing degli URL è stato aggirato — svuota le cache di PrestaShop e del browser, e riapri Adminer dal menu.
Architettura tecnica
Per gli sviluppatori o amministratori curiosi che vogliono capire come funziona il modulo internamente.
Auto-login: pre-popolamento della sessione
Il loader views/adminer/loader.php avvia la sessione di Adminer prima che adminer.php si carichi:
- Chiude qualsiasi sessione PHP in corso tramite
session_write_close()(PS9 può averne avviata una via Symfony) - Avvia una nuova sessione con
session_name('adminer_sid') - Pre-popola
$_SESSION[pwds][server][host][user]con la password reale del database, letta da_DB_PASSWD_ - Pre-popola
$_SESSION[db][server][host][user][dbname] = true - Definisce
$_GET[username],$_GET[db],$_GET[server]con i valori PrestaShop - Carica
adminer.php
Quando Adminer si inizializza, vede che la costante SID è già definita e salta il proprio session_start(). Vede $_SESSION[pwds] non vuoto e salta anche il ripristino tramite cookie permanente. Il controllo di auth passa immediatamente, Driver::connect() usa la password reale tramite il metodo credentials() della nostra classe, e login() restituisce true.
Bypass del CSRF di PrestaShop
I form POST interni di Adminer (esecuzione di query SQL, modifica di righe, eliminazione di tabelle) non portano il token CSRF per controller di PrestaShop. Senza intervento, PS rifiuta queste richieste con una schermata Invalid Security Token.
Il controller AdminDfAdminerController sovrascrive il metodo checkToken() per restituire true senza verifica. È sicuro perché il gate SuperAdmin (id_profile === 1) a monte è strettamente più forte di un token CSRF: un attaccante che ha già una sessione SuperAdmin rubata ha già accesso completo al back office comunque.
Riscrittura degli URL di Adminer
Adminer costruisce i suoi link interni come index.php?select=table_name&db=ps. Senza riscrittura, questi URL non portano controller=AdminDfAdminer e PrestaShop li indirizzerebbe alla dashboard.
Il controller chiama ob_start() con un callback che post-processa l’output HTML di Adminer: iniezione del banner di ritorno BO all’inizio del body, e riscrittura di tutti gli attributi href, action e src che puntano a index.php?... per iniettare controller=AdminDfAdminer& subito dopo il ?.
Sopravvivenza agli exit; di Adminer
Adminer fa 19 chiamate a exit; in vari punti (page_footer, file= serving per gli asset, fine di errore). Un semplice ob_get_clean() alla fine del controller non sarebbe mai raggiunto in quei casi.
La soluzione: passare il callback di post-processing direttamente a ob_start(). PHP chiama automaticamente il callback al momento del flush finale del buffer, anche se è stato chiamato exit;. Tutti gli output di Adminer passano quindi per il post-processing, senza eccezione.
Compatibilità PrestaShop 9
Il modulo è testato su PrestaShop 8.0, 8.1, 8.2 e 9.0. La compatibilità PS 9 si ottiene usando esclusivamente i pattern legacy supportati da entrambe le versioni:
ModuleAdminControllerinvece di Symfony controller — supportato su PS 8 e PS 9- Smarty per il template di configurazione — supportato nativamente
- Installazione di scheda tramite la classe
Tab— API stabile tra versioni - Nessuna classe Symfony specifica, nessun bundle richiesto
- PSR-4 autoload senza Composer (caricato tramite
require_oncenel main module)
Su PS 9, il modulo funziona senza modifica, senza ricompilazione, senza composer install.
Licenza e codice sorgente
Il modulo DataFirefly è sotto licenza commerciale (DataFirefly Limited, Ireland). Il codice sorgente è consegnato non cifrato nello ZIP — puoi auditarlo, estendere gli hook, o adattare il comportamento (ad esempio aggiungere altri profili autorizzati ad aprire Adminer).
Adminer stesso è sotto doppia licenza Apache 2.0 / GPL 2.0, creato da Jakub Vrana. Il file adminer.php incorporato è la versione stabile 5.4.2 inalterata — puoi sostituirlo con qualsiasi versione di Adminer compatibile rispettando la licenza originale.
Supporto
Il supporto è incluso per 12 mesi dopo l’acquisto (24h lavorative, FR/EN). Per qualsiasi domanda:
- Email: support presso datafirefly.com
- Area cliente: datafirefly.com/it/il-mio-account
Per bug o richieste di evoluzione, specifica la tua versione PrestaShop, versione PHP, hosting e versione del modulo installata.