PS PrestaShop Gemiddeld

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.

Bijgewerkt Moduleversie 1.0.0

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.

In één zin — installeer de ZIP, open het menu Adminer, beheer uw database. De auto-login gebruikt de credentials van de winkel, de toegang is beperkt tot het SuperAdmin-profiel.

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:

  1. Ga naar Modules > Modulebeheer
  2. Klik rechtsboven op Een module installeren
  3. Sleep het bestand dfadminer-1.0.0.zip erin of klik om het te selecteren
  4. Wacht tot de upload klaar is (enkele seconden — de ZIP is kleiner dan 400 KB)
  5. 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.

Als het tabblad niet verschijnt — leeg de PrestaShop-cache (Geavanceerde instellingen > Prestaties > Cache legen) en herlaad het menu. Log op PrestaShop 9 uit en weer in op de back-office.

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.

Adminer-sessies per medewerker — elke SuperAdmin-medewerker krijgt zijn eigen Adminer-sessie (de PHP-sessies zijn per browsercookie), maar iedereen verbindt met dezelfde database met dezelfde systeemcredentials. Geen Adminer-accountbeheer nodig.

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

Uitgaande verbinding vereist — de download vereist dat uw server 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.

Tip — Adminer onthoudt de geschiedenis van uw SQL-query’s in de sessie. U kunt door de geschiedenis navigeren via het menu History onderaan de pagina, en een query in één klik opnieuw uitvoeren.

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:

  1. Download de nieuwe ZIP vanuit uw DataFirefly-klantomgeving
  2. In de BO: Modules > Modulebeheer
  3. Klik op Een module installeren en upload de nieuwe ZIP
  4. PrestaShop detecteert dat er al een versie bestaat en stelt voor die bij te werken
  5. 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:

  1. Ga naar Modules > Modulebeheer
  2. Zoek Database Manager Back Office
  3. 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:

  1. Open de DevTools van uw browser (F12)
  2. Ga naar het tabblad Application (Chrome) of Storage (Firefox)
  3. Sectie Cookies, selecteer uw domein
  4. Verwijder de cookies met de namen adminer_sid, adminer_permanent, adminer_key en adminer_version
  5. 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?).

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:

  1. Leeg de PrestaShop-cache (Geavanceerde instellingen > Prestaties > Cache legen)
  2. Leeg de browsercache (Ctrl+Shift+R)
  3. 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:

  1. Sluit elke lopende PHP-sessie via session_write_close() (PS9 kan er een via Symfony hebben gestart)
  2. Start een nieuwe sessie met session_name('adminer_sid')
  3. Vult $_SESSION[pwds][server][host][user] vooraf met het echte databasewachtwoord, gelezen uit _DB_PASSWD_
  4. Vult $_SESSION[db][server][host][user][dbname] = true vooraf
  5. Definieert $_GET[username], $_GET[db], $_GET[server] op de PrestaShop-waarden
  6. 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:

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

Vermeld voor bugs of evolutieverzoeken uw PrestaShop-versie, uw PHP-versie, uw hoster en de geïnstalleerde moduleversie.

Was deze pagina nuttig?

Loopt u nog vast? Neem contact op met support