Database Manager Backoffice — Adminer voor PrestaShop: volledige gids
Volledige documentatie van de module dfdbmanager: Adminer 5 installeren in de back-office van PrestaShop 8 en 9, auto-login met de credentials van de winkel, SuperAdmin-beperking, bijwerken, probleemoplossing.
De module Database Manager Back Office (interne referentie dfdbmanager) integreert Adminer 5.4.2 direct in de back-office van PrestaShop 8 en 9. Geen cPanel of externe phpMyAdmin meer nodig: één klik in het menu Geavanceerde instellingen > Adminer en u beheert uw database, al geauthenticeerd.
Vereisten
- PrestaShop: 8.0.0 tot 9.99.99 (getest op 8.0, 8.1, 8.2, 9.0)
- PHP: 7.4 of hoger (compatibel met 8.0, 8.1, 8.2, 8.3)
- Database: MySQL 5.7+ of MariaDB 10.3+
- Medewerkersaccount: SuperAdmin-profiel (id_profile = 1) om Adminer te openen
- Hosting: compatibel met gedeelde hosting (o2switch, OVH, Infomaniak), VPS, dedicated
Er is geen enkele uitgaande verbinding vanaf uw server vereist: Adminer 5.4.2 zit gebundeld in de ZIP van de module (508 KB, één enkel bestand).
Installatie
1. De ZIP uploaden
In uw PrestaShop back-office:
- Ga naar Modules > Modulebeheer
- Klik rechtsboven op Een module installeren
- Sleep het bestand
dfadminer-1.0.0.ziperin of klik om het te selecteren - Wacht tot de upload klaar is (enkele seconden — de ZIP is kleiner dan 400 KB)
- De module installeert automatisch
2. Het menutabblad controleren
De installatie maakt automatisch een menutabblad aan onder Geavanceerde instellingen > Adminer, met een Material-opslagicoon. Het tabblad wordt in vijf talen aangemaakt (Frans, Engels, Spaans, Duits, Italiaans) — de actieve taal wordt getoond volgens uw medewerkersprofiel.
Eerste toegang tot Adminer
Het menu openen
Navigeer naar Geavanceerde instellingen > Adminer. U komt direct op de tabellenlijst van uw PrestaShop-database, zonder authenticatiescherm, zonder in te vullen formulier.
De pagina bestaat uit:
- Een vaste banner bovenaan, in dark navy, met de naam van uw database links en een blauwe knop Back to PrestaShop BO rechts
- De Adminer-interface eronder: tabellensidebar links, hoofdinhoud rechts
Auto-login: hoe het werkt
De module leest de credentials van uw database uit de PrestaShop-configuratie (de constanten _DB_SERVER_, _DB_USER_, _DB_PASSWD_, _DB_NAME_ gedefinieerd in config/parameters.php of config/settings.inc.php) en start de Adminer-sessie server-side met deze credentials voordat Adminer laadt. Er wordt geen nieuw wachtwoord aangemaakt, geen enkele MySQL-permissie uitgebreid — Adminer gebruikt exact dezelfde rechten als PrestaShop.
Configuratiepagina van de module
Zoek vanuit Modules > Modulebeheer naar Database Manager Back Office en klik op Configureren. De pagina biedt drie secties.
Status
Toont:
- Lokaal geïnstalleerde Adminer-versie (standaard 5.4.2)
- Pad van het bestand
adminer.phpin de module - Geïnstalleerde variant (volledige Adminer of Adminer Editor)
- Bestandsgrootte
Adminer bijwerken
Wanneer een nieuwe stabiele versie van Adminer op adminer.org verschijnt, kunt u die direct vanaf deze pagina downloaden. Klik op Update to latest Adminer — de module haalt het bestand op van adminer.org/latest-en.php via cURL (of file_get_contents als fallback) en vervangt het lokale bestand.
adminer.org via HTTPS kan bereiken. Op sommige zeer restrictieve gedeelde hostings zijn uitgaande verbindingen geblokkeerd. Download in dat geval het bestand handmatig van adminer.org en vervang het via FTP in modules/dfadminer/views/adminer/adminer.php.
Overschakelen naar Adminer Editor
Adminer publiceert ook een Editor-variant — de interface is identiek maar het veld voor ruwe SQL-uitvoering is verwijderd. Alleen het navigeren in de tabellen en het bewerken van rijen blijven beschikbaar. Nuttig als u toegang wilt geven aan een minder technisch profiel zonder het risico dat het vrije SQL uitvoert.
Klik op Switch to Adminer Editor om het bestand te downloaden en te vervangen. U kunt op elk moment terugkeren naar de volledige Adminer met Switch back to full Adminer.
Beveiligingsmodel
SuperAdmin-beperking
Adminer is een krachtig hulpmiddel: wie toegang heeft tot uw database heeft toegang tot alles (bestellingen, klanten, betalingen, gehashte medewerkerswachtwoorden). Daarom beperkt de module de toegang tot uitsluitend het SuperAdmin-profiel — dat wil zeggen id_profile = 1 in PrestaShop.
De andere profielen (Logistiek medewerker, Vertaler, Verkoper, aangepaste profielen) krijgen een bericht Access Denied als ze Adminer proberen te openen, zelfs als ze de URL kennen.
Dubbele servercontrole
De beperking wordt twee keer server-side toegepast in de controller:
- In
postProcess()— voordat Adminer draait - In
initContent()— bij de fallback-UI-rendering
Deze dubbele controle garandeert dat geen enkel codepad de gate omzeilt, zelfs bij onverwacht gedrag van de PrestaShop-router.
Directe HTTP-blokkering van het bestand adminer.php
Het bestand views/adminer/adminer.php is geblokkeerd voor directe HTTP-toegang via een .htaccess met de directive Require all denied. Een poging om de URL /modules/dfadminer/views/adminer/adminer.php direct te openen, geeft een 403 Forbidden terug. De enige manier om Adminer te bereiken is via de PrestaShop-controller, die de SuperAdmin-gate toepast.
Adminer gebruiken voor PrestaShop
Veelgebruikte tabellen om te kennen
Enkele tabellen die vaak nuttig zijn voor PrestaShop-debugging (standaardvoorvoegsel ps_, kan verschillen per installatie):
- ps_configuration — alle configuratievariabelen (sleutels/waarden)
- ps_orders — bestellingen
- ps_customer — klanten
- ps_product + ps_product_lang — producten en hun vertalingen
- ps_employee — BO-medewerkers
- ps_log — PrestaShop-foutlogboek
- ps_cart + ps_cart_product — winkelwagens
- ps_specific_price — promoties en prijsregels
Een SQL-query uitvoeren
Klik in de linkersidebar op SQL command. Typ uw query en klik op Execute. Adminer toont het resultaat onderaan, met automatische paginering voor grote resultaten.
Een tabel exporteren
Klik op een tabel op Export. Adminer biedt meerdere formaten: SQL (met of zonder gegevens), CSV, TSV. Voor zeer grote tabellen gebeurt de export in chunked streaming — geen PHP-geheugenprobleem.
Een rij ter plekke bewerken
Klik op elke willekeurige tabel op Select data, en dan op het potlood links van een rij. U bewerkt alle velden in een formulier en slaat op met één klik. Adminer genereert automatisch de UPDATE-query.
Meerdere SuperAdmin-medewerkers
Hebt u meerdere medewerkers met het SuperAdmin-profiel, dan krijgt elk zijn eigen onafhankelijke Adminer-sessie. Concreet:
- Medewerker A opent Adminer in zijn browser — zijn adminer_sid-sessie wordt aangemaakt
- Medewerker B doet hetzelfde in de zijne — zijn eigen adminer_sid-sessie wordt aangemaakt
- Beiden kunnen parallel in Adminer navigeren zonder interferentie
- Wanneer A uitlogt uit de PrestaShop BO, blijft zijn Adminer-sessie geldig tot het sluiten van de browser (en verloopt daarna)
Alle medewerkers verbinden met dezelfde database met dezelfde systeemcredentials — er zijn geen aparte Adminer-accounts te beheren.
Module bijwerken
Om de module naar een recentere versie bij te werken:
- Download de nieuwe ZIP vanuit uw DataFirefly-klantomgeving
- In de BO: Modules > Modulebeheer
- Klik op Een module installeren en upload de nieuwe ZIP
- PrestaShop detecteert dat er al een versie bestaat en stelt voor die bij te werken
- Bevestig — de module wordt bijgewerkt zonder de configuratie te verliezen
Aangezien er geen enkele databasetabel wordt aangemaakt, is er geen schemamigratie tussen versies te beheren.
Deïnstallatie
Om de module netjes te deïnstalleren:
- Ga naar Modules > Modulebeheer
- Zoek Database Manager Back Office
- Klik op Deïnstalleren in het keuzemenu
De deïnstallatie:
- Verwijdert het menutabblad Geavanceerde instellingen > Adminer
- Verwijdert de modulebestanden (inclusief het gebundelde bestand
adminer.php) - Raakt geen enkele tabel aan — uw PrestaShop-database blijft intact
- Wijzigt geen enkele PrestaShop-configuratie, geen wachtwoord, geen permissie
De deïnstallatie is volledig omkeerbaar: herinstalleer de module om Adminer in dezelfde staat terug te vinden.
Probleemoplossing
Het Adminer-authenticatiescherm verschijnt in plaats van de tabellenlijst
Symptoom: u opent het menu Adminer en ziet het Authenticatie-formulier van Adminer (velden System, Server, Username, Password, Database) in plaats van de tabellenlijst.
Waarschijnlijke oorzaak: een oude Adminer-cookie (van de vorige installatie of van een andere Adminer-site) interfereert met de vooringevulde sessie.
Oplossing:
- Open de DevTools van uw browser (F12)
- Ga naar het tabblad Application (Chrome) of Storage (Firefox)
- Sectie Cookies, selecteer uw domein
- Verwijder de cookies met de namen
adminer_sid,adminer_permanent,adminer_keyenadminer_version - Herlaad de Adminer-pagina met Ctrl+Shift+R
403 Forbidden-fout bij het laden
Symptoom: de Adminer-pagina geeft een HTTP-status 403 terug, soms met het authenticatieformulier eronder zichtbaar.
Waarschijnlijke oorzaak: Adminer herkent de vooringevulde sessie niet en valt in zijn auth_error-codepad, dat expliciet HTTP/1.1 403 Forbidden toevoegt wanneer $_GET[username] is gedefinieerd maar de authenticatie mislukt.
Oplossing: zelfde procedure als hierboven — wis de Adminer-cookies uit de browser. Blijft het probleem, controleer dan of de PrestaShop-credentials in config/parameters.php (PS9) of config/settings.inc.php (PS8) correct zijn en of PrestaShop daadwerkelijk met MySQL kan verbinden (werkt de PrestaShop BO normaal?).
De Adminer-links brengen terug naar het PrestaShop-dashboard
Symptoom: u klikt op een tabelnaam in de Adminer-sidebar en komt op het PrestaShop-dashboard terecht in plaats van op de tabelpagina.
Waarschijnlijke oorzaak: de post-processing van de URL’s (die controller=AdminDfAdminer in de interne Adminer-URL’s injecteert) heeft niet gewerkt. Meestal: een HTML-cache of tussenliggende proxy die een verouderde versie van de pagina serveert.
Oplossing:
- Leeg de PrestaShop-cache (Geavanceerde instellingen > Prestaties > Cache legen)
- Leeg de browsercache (Ctrl+Shift+R)
- Zit er een CDN of HTTP-cache vóór (Cloudflare, Varnish), purge dan zijn cache voor de URL’s
/admin*/index.php
Donkere modus: de banner of Adminer past zich niet aan
De banner van de module past zich automatisch aan de donkere modus van het systeem aan via de media query @media (prefers-color-scheme: dark). Adminer 5 heeft ook zijn eigen ingebouwde donkere modus die dezelfde systeemvoorkeur volgt.
Volgt de weergave uw systeemmodus niet:
- Controleer of uw OS daadwerkelijk in donkere modus staat (Windows: Instellingen > Persoonlijke instellingen > Kleuren > Donkere modus; macOS: Systeemvoorkeuren > Algemeen > Weergave: Donker)
- De browser moet deze voorkeur doorgeven — standaard doen Chrome en Firefox dat, maar sommige themabeheerextensies kunnen dit overriden
- Controleer met DevTools Rendering > Emulate CSS media feature prefers-color-scheme dat de voorkeur daadwerkelijk dark is
Invalid Security Token bij een Adminer-actie
Symptoom: u voert een SQL-query uit of bewerkt een rij, en PrestaShop toont Invalid Security Token.
Waarschijnlijke oorzaak: dit bericht verschijnt normaal nooit met de module — de controller overridet checkToken() om de PrestaShop-CSRF op de interne Adminer-acties te omzeilen. Ziet u het toch, dan gebruikt u een URL die niet via onze controller loopt.
Oplossing: controleer of de URL in de browserbalk daadwerkelijk begint met index.php?controller=AdminDfAdminer&token=.... Begint ze met index.php?select=... zonder de controller-parameter, dan is de URL-post-processing omzeild — leeg de PrestaShop- en browsercaches en heropen Adminer vanuit het menu.
Technische architectuur
Voor ontwikkelaars of nieuwsgierige beheerders die willen begrijpen hoe de module intern werkt.
Auto-login: sessie-voorinvulling
De loader views/adminer/loader.php start de Adminer-sessie voordat adminer.php laadt:
- Sluit elke lopende PHP-sessie via
session_write_close()(PS9 kan er een via Symfony hebben gestart) - Start een nieuwe sessie met
session_name('adminer_sid') - Vult
$_SESSION[pwds][server][host][user]vooraf met het echte databasewachtwoord, gelezen uit_DB_PASSWD_ - Vult
$_SESSION[db][server][host][user][dbname] = truevooraf - Definieert
$_GET[username],$_GET[db],$_GET[server]op de PrestaShop-waarden - Laadt
adminer.php
Wanneer Adminer initialiseert, ziet hij dat de constante SID al is gedefinieerd en slaat hij zijn eigen session_start() over. Hij ziet $_SESSION[pwds] niet-leeg en slaat het herstel via de permanente cookie over. De authenticatiecontrole slaagt direct, Driver::connect() gebruikt het echte wachtwoord via de methode credentials() van onze klasse, en login() geeft true terug.
Omzeiling van de PrestaShop-CSRF
De interne POST-formulieren van Adminer (SQL-uitvoering, rijbewerking, tabelverwijdering) dragen niet het per-controller CSRF-token van PrestaShop. Zonder ingreep weigert PS deze verzoeken met een scherm Invalid Security Token.
De controller AdminDfAdminerController overridet de methode checkToken() om true terug te geven zonder controle. Dat is veilig omdat de SuperAdmin-gate (id_profile === 1) ervoor strikt sterker is dan een CSRF-token: een aanvaller die al een gestolen SuperAdmin-sessie zou hebben, heeft sowieso al toegang tot de hele back-office.
Herschrijving van de Adminer-URL’s
Adminer bouwt zijn interne links als index.php?select=table_name&db=ps. Zonder herschrijving dragen deze URL’s geen controller=AdminDfAdminer en zou PrestaShop ze naar het dashboard routeren.
De controller roept ob_start() aan met een callback die de HTML-uitvoer van Adminer post-processt: injectie van de terug-naar-BO-banner aan het begin van de body, en herschrijving van alle href-, action– en src-attributen die naar index.php?... wijzen om er controller=AdminDfAdminer& direct na de ? in te injecteren.
Overleven van de exit;-aanroepen van Adminer
Adminer doet 19 aanroepen van exit; op diverse plaatsen (page_footer, file=-serving voor de assets, foutafhandeling). Een simpele ob_get_clean() aan het einde van de controller zou in die gevallen nooit worden bereikt.
De oplossing: de post-processing-callback direct aan ob_start() doorgeven. De callback wordt automatisch door PHP aangeroepen bij de finale flush van de buffer, zelfs als exit; is aangeroepen. Alle uitvoer van Adminer passeert dus de post-processing, zonder uitzondering.
Compatibiliteit met PrestaShop 9
De module is getest op PrestaShop 8.0, 8.1, 8.2 en 9.0. De PS 9-compatibiliteit wordt bereikt door uitsluitend legacy-patronen te gebruiken die door beide versies worden ondersteund:
ModuleAdminControllerin plaats van Symfony-controllers — ondersteund in PS 8 en PS 9- Smarty voor het configuratietemplate — native ondersteund
- Tabbladinstallatie via de klasse
Tab— stabiele API tussen versies - Geen specifieke Symfony-klassen, geen bundle vereist
- PSR-4-autoload zonder Composer (geladen via
require_oncein de hoofdmodule)
Op PS 9 werkt de module zonder wijziging, zonder hercompilatie, zonder composer install.
Licentie en broncode
De DataFirefly-module valt onder een commerciële licentie (DataFirefly Limited, Ierland). De broncode wordt niet-versleuteld in de ZIP geleverd — u kunt hem auditeren, de hooks uitbreiden of het gedrag aanpassen (bijvoorbeeld andere profielen toestaan om Adminer te openen).
Adminer zelf valt onder de dubbele licentie Apache 2.0 / GPL 2.0, gemaakt door Jakub Vrana. Het gebundelde bestand adminer.php is de ongewijzigde stabiele versie 5.4.2 — u kunt het vervangen door elke compatibele Adminer-versie met inachtneming van de oorspronkelijke licentie.
Support
De support is 12 maanden na aankoop inbegrepen (24 werkuren, FR/EN). Voor elke vraag:
- E-mail: support op datafirefly.com
- Klantomgeving: datafirefly.com/my-account
Vermeld voor bugs of evolutieverzoeken uw PrestaShop-versie, uw PHP-versie, uw hoster en de geïnstalleerde moduleversie.