PS PrestaShop Intermedio

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.

Aggiornato Versione del modulo 1.0.0

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.

In una frase — installa lo ZIP, apri il menu Adminer, gestisci il tuo database. L’auto-login usa le credenziali del negozio, l’accesso è ristretto al profilo SuperAdmin.

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:

  1. Vai a Moduli > Gestore Moduli
  2. Clicca su Carica un modulo in alto a destra
  3. Trascina e rilascia il file dfadminer-1.0.0.zip o clicca per selezionarlo
  4. Attendi la fine del caricamento (qualche secondo — lo ZIP pesa meno di 400 KB)
  5. 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.

Se la scheda non appare — svuota la cache di PrestaShop (Parametri Avanzati > Prestazioni > Svuota la cache) poi ricarica il menu. Su PrestaShop 9, esci e rientra nel back office.

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.

Sessioni Adminer per dipendente — ogni dipendente SuperAdmin avrà la propria sessione Adminer (le sessioni PHP sono per cookie del browser), ma tutti si connettono allo stesso database con le stesse credenziali di sistema. Nessun account Adminer da gestire.

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.php nel 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.

Connessione in uscita richiesta — il download richiede che il tuo server possa raggiungere 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.

Consiglio — Adminer memorizza la cronologia delle tue query SQL nella sessione. Puoi navigare la cronologia tramite il menu History a fondo pagina, e rieseguire una query con un clic.

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:

  1. Scarica il nuovo ZIP dalla tua area cliente DataFirefly
  2. Nel BO, Moduli > Gestore Moduli
  3. Clicca su Carica un modulo e carica il nuovo ZIP
  4. PrestaShop rileva che esiste già una versione e propone di aggiornarla
  5. 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:

  1. Vai a Moduli > Gestore Moduli
  2. Trova Database Manager Back Office
  3. 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.php incorporato)
  • 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:

  1. Apri le DevTools del tuo browser (F12)
  2. Vai alla scheda Application (Chrome) o Archiviazione (Firefox)
  3. Sezione Cookies, seleziona il tuo dominio
  4. Elimina i cookie chiamati adminer_sid, adminer_permanent, adminer_key e adminer_version
  5. 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?).

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:

  1. Svuota la cache di PrestaShop (Parametri Avanzati > Prestazioni > Svuota la cache)
  2. Svuota la cache del browser (Ctrl+Shift+R)
  3. 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:

  1. Chiude qualsiasi sessione PHP in corso tramite session_write_close() (PS9 può averne avviata una via Symfony)
  2. Avvia una nuova sessione con session_name('adminer_sid')
  3. Pre-popola $_SESSION[pwds][server][host][user] con la password reale del database, letta da _DB_PASSWD_
  4. Pre-popola $_SESSION[db][server][host][user][dbname] = true
  5. Definisce $_GET[username], $_GET[db], $_GET[server] con i valori PrestaShop
  6. 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:

  • ModuleAdminController invece 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_once nel 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:

Per bug o richieste di evoluzione, specifica la tua versione PrestaShop, versione PHP, hosting e versione del modulo installata.

Questa pagina ti è stata utile?

Ancora bloccato? Contatta l'assistenza