# Database Manager Backoffice — Adminer voor PrestaShop: volledige gids

> 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…

- Pagina: <https://www.datafirefly.com/nl/documentation/database-manager-adminer-prestashop/>
- Taal: nl
- Bijgewerkt op: 2026-10-10
- Andere talen: [fr](https://www.datafirefly.com/documentation/database-manager-adminer-prestashop/index.md), [en](https://www.datafirefly.com/en/documentation/database-manager-adminer-prestashop/index.md), [es](https://www.datafirefly.com/es/documentation/database-manager-adminer-prestashop/index.md), [de](https://www.datafirefly.com/de/documentation/database-manager-adminer-prestashop/index.md), [it](https://www.datafirefly.com/it/documentation/database-manager-adminer-prestashop/index.md), [pl](https://www.datafirefly.com/pl/documentation/database-manager-adminer-prestashop/index.md), [pt](https://www.datafirefly.com/pt/documentation/database-manager-adminer-prestashop/index.md)
- Index: <https://www.datafirefly.com/nl/documentation/llms.txt>

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?).

### 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**:

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:

- E-mail: support op datafirefly.com
- Klantomgeving: [datafirefly.com/my-account](https://www.datafirefly.com/nl/mijn-account/)

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