Database Manager Back Office — Adminer para PrestaShop: instalación, configuración, solución de problemas
Documentación completa del módulo dfdbmanager: instalar Adminer 5 en el back office PrestaShop 8 y 9, auto-login con credenciales de la tienda, restricción SuperAdmin, actualización, solución de problemas.
El módulo Database Manager Back Office (referencia interna dfdbmanager) integra Adminer 5.4.2 directamente en el back office de PrestaShop 8 y 9. Sin necesidad de cPanel ni de phpMyAdmin externo: un clic en el menú Parámetros Avanzados > Adminer y gestionas tu base de datos, ya autenticado.
Requisitos previos
- PrestaShop: 8.0.0 a 9.99.99 (probado en 8.0, 8.1, 8.2, 9.0)
- PHP: 7.4 o superior (compatible con 8.0, 8.1, 8.2, 8.3)
- Base de datos: MySQL 5.7+ o MariaDB 10.3+
- Cuenta de empleado: perfil SuperAdmin (id_profile = 1) para abrir Adminer
- Hosting: compatible con hosting compartido (o2switch, OVH, Infomaniak), VPS, dedicado
No se requiere ninguna conexión saliente desde tu servidor: Adminer 5.4.2 está empaquetado en el ZIP del módulo (508 KB, archivo único).
Instalación
1. Subir el ZIP
En tu back office PrestaShop:
- Ve a Módulos > Gestor de Módulos
- Haz clic en Subir un módulo en la parte superior derecha
- Arrastra y suelta el archivo
dfadminer-1.0.0.zipo haz clic para seleccionarlo - Espera a que termine la subida (unos segundos — el ZIP pesa menos de 400 KB)
- El módulo se instala automáticamente
2. Verificar la pestaña del menú
La instalación crea automáticamente una pestaña de menú en Parámetros Avanzados > Adminer, con un icono Material storage. La pestaña se crea en cinco idiomas (francés, inglés, español, alemán, italiano) — el idioma activo se mostrará según tu perfil de empleado.
Primer acceso a Adminer
Abrir el menú
Navega a Parámetros Avanzados > Adminer. Llegas directamente a la lista de tablas de tu base PrestaShop, sin pantalla de autenticación, sin formulario que rellenar.
La página se compone de:
- Un banner fijo en la parte superior, en dark navy, con el nombre de tu base a la izquierda y un botón azul Back to PrestaShop BO a la derecha
- La interfaz Adminer debajo: sidebar de tablas a la izquierda, contenido principal a la derecha
Auto-login: cómo funciona
El módulo lee las credenciales de tu base desde la configuración de PrestaShop (las constantes _DB_SERVER_, _DB_USER_, _DB_PASSWD_, _DB_NAME_ definidas en config/parameters.php o config/settings.inc.php) e inicia la sesión de Adminer del lado servidor con estas credenciales antes de que Adminer se cargue. No se crea ninguna contraseña nueva, no se extiende ningún permiso MySQL — Adminer usa exactamente los mismos derechos que PrestaShop.
Página de configuración del módulo
Desde Módulos > Gestor de Módulos, busca Database Manager Back Office y haz clic en Configurar. La página ofrece tres secciones.
Estado
Muestra:
- Versión de Adminer instalada localmente (5.4.2 por defecto)
- Ruta del archivo
adminer.phpen el módulo - Variante instalada (Adminer completo o Adminer Editor)
- Tamaño del archivo
Actualizar Adminer
Cuando sale una nueva versión estable de Adminer en adminer.org, puedes descargarla directamente desde esta página. Haz clic en Update to latest Adminer — el módulo recupera el archivo desde adminer.org/latest-en.php vía cURL (o file_get_contents como fallback) y reemplaza el archivo local.
adminer.org en HTTPS. En algunos hostings compartidos muy restrictivos, las conexiones salientes están bloqueadas. En ese caso, descarga manualmente el archivo desde adminer.org y reemplázalo en modules/dfadminer/views/adminer/adminer.php vía FTP.
Cambiar a Adminer Editor
Adminer también publica una variante Editor — la interfaz es idéntica pero el campo de ejecución SQL crudo está retirado. Solo la navegación en las tablas y la edición de filas siguen disponibles. Útil si quieres dar acceso a un perfil menos técnico sin arriesgar la ejecución de SQL libre.
Haz clic en Switch to Adminer Editor para descargar y reemplazar el archivo. Puedes volver a Adminer completo en cualquier momento con Switch back to full Adminer.
Modelo de seguridad
Restricción SuperAdmin
Adminer es una herramienta potente: quien tiene acceso a tu base tiene acceso a todo (pedidos, clientes, pagos, contraseñas hasheadas de empleados). Por esa razón, el módulo restringe el acceso al perfil SuperAdmin únicamente — es decir, id_profile = 1 en PrestaShop.
Los demás perfiles (Logístico, Traductor, Vendedor, perfiles personalizados) reciben un mensaje Access Denied si intentan abrir Adminer, aunque conozcan la URL.
Doble verificación del lado servidor
La restricción se aplica dos veces del lado servidor en el controlador:
- En
postProcess()— antes de que Adminer se ejecute - En
initContent()— en el renderizado UI de respaldo
Esta doble verificación garantiza que ningún camino de código eluda la puerta, incluso con un comportamiento inesperado del router de PrestaShop.
Bloqueo del acceso HTTP directo al archivo adminer.php
El archivo views/adminer/adminer.php está bloqueado al acceso HTTP directo vía un .htaccess con la directiva Require all denied. Intentar abrir directamente la URL /modules/dfadminer/views/adminer/adminer.php devuelve un 403 Forbidden. La única forma de alcanzar Adminer es pasando por el controlador de PrestaShop, que aplica la puerta SuperAdmin.
Usar Adminer para PrestaShop
Tablas comunes que conocer
Algunas tablas frecuentemente útiles para el debug PrestaShop (prefijo ps_ por defecto, puede variar según tu instalación):
- ps_configuration — todas las variables de configuración (clave/valor)
- ps_orders — pedidos
- ps_customer — clientes
- ps_product + ps_product_lang — productos y sus traducciones
- ps_employee — empleados del BO
- ps_log — registro de errores de PrestaShop
- ps_cart + ps_cart_product — carritos
- ps_specific_price — promociones y reglas de precio
Ejecutar una consulta SQL
En la sidebar izquierda, haz clic en SQL command. Escribe tu consulta, haz clic en Execute. Adminer muestra el resultado debajo, con paginación automática para resultados grandes.
Exportar una tabla
En una tabla dada, haz clic en Export. Adminer ofrece varios formatos: SQL (con o sin datos), CSV, TSV. Para tablas muy grandes, la exportación se hace en streaming chunked — sin problema de memoria PHP.
Editar una fila en sitio
En cualquier tabla, haz clic en Select data, luego en el lápiz a la izquierda de una fila. Editas todos los campos en un formulario y guardas con un clic. Adminer genera automáticamente la consulta UPDATE.
Múltiples empleados SuperAdmin
Si tienes varios empleados con el perfil SuperAdmin, cada uno tendrá su propia sesión Adminer independiente. Concretamente:
- El empleado A abre Adminer en su navegador — se crea su sesión adminer_sid
- El empleado B hace lo mismo en el suyo — se crea su propia sesión adminer_sid
- Ambos pueden navegar en Adminer en paralelo sin interferencia
- Cuando A cierra sesión del BO PrestaShop, su sesión Adminer sigue válida hasta que cierre el navegador (luego expira)
Todos los empleados se conectan a la misma base con las mismas credenciales del sistema — no hay cuentas Adminer separadas que gestionar.
Actualización del módulo
Para actualizar el módulo a una versión más reciente:
- Descarga el nuevo ZIP desde tu área de cliente DataFirefly
- En el BO, Módulos > Gestor de Módulos
- Haz clic en Subir un módulo y sube el nuevo ZIP
- PrestaShop detecta que ya existe una versión y propone actualizarla
- Confirma — el módulo se actualiza sin perder la configuración
Al no crearse ninguna tabla BDD, no hay migración de esquema que gestionar entre versiones.
Desinstalación
Para desinstalar limpiamente el módulo:
- Ve a Módulos > Gestor de Módulos
- Encuentra Database Manager Back Office
- Haz clic en Desinstalar en el menú desplegable
La desinstalación:
- Elimina la pestaña de menú Parámetros Avanzados > Adminer
- Retira los archivos del módulo (incluido el archivo
adminer.phpempaquetado) - No toca ninguna tabla — tu base PrestaShop queda intacta
- No modifica ninguna configuración PrestaShop, ninguna contraseña, ningún permiso
La desinstalación es totalmente reversible: reinstala el módulo para recuperar Adminer en el mismo estado.
Solución de problemas
La pantalla de autenticación de Adminer aparece en lugar de la lista de tablas
Síntoma: abres el menú Adminer y ves el formulario Autenticación de Adminer (campos System, Server, Username, Password, Database) en lugar de la lista de tablas.
Causa probable: una cookie Adminer antigua (de una instalación anterior o de otro sitio Adminer) interfiere con la sesión pre-poblada.
Solución:
- Abre las DevTools de tu navegador (F12)
- Ve a la pestaña Application (Chrome) o Almacenamiento (Firefox)
- Sección Cookies, selecciona tu dominio
- Elimina las cookies llamadas
adminer_sid,adminer_permanent,adminer_keyyadminer_version - Recarga la página Adminer con Ctrl+Shift+R
Error 403 Forbidden al cargar
Síntoma: la página Adminer devuelve un estado HTTP 403, a veces con el formulario de autenticación visible debajo.
Causa probable: Adminer no reconoce la sesión pre-poblada y cae en su code-path auth_error que añade explícitamente HTTP/1.1 403 Forbidden cuando $_GET[username] está definido pero la autenticación falla.
Solución: mismo procedimiento que arriba — vacía las cookies Adminer del navegador. Si el problema persiste, verifica que las credenciales PrestaShop en config/parameters.php (PS9) o config/settings.inc.php (PS8) son correctas y que PrestaShop consigue conectarse a MySQL (¿funciona normalmente el BO PrestaShop?).
Los enlaces de Adminer redirigen al dashboard de PrestaShop
Síntoma: haces clic en un nombre de tabla en la sidebar de Adminer y llegas al dashboard de PrestaShop en lugar de la página de la tabla.
Causa probable: el post-procesamiento de URLs (que inyecta controller=AdminDfAdminer en las URLs internas de Adminer) no funcionó. La mayoría de las veces: una caché HTML o un proxy intermedio que sirve una versión stale de la página.
Solución:
- Vacía la caché de PrestaShop (Parámetros Avanzados > Rendimiento > Vaciar caché)
- Vacía la caché del navegador (Ctrl+Shift+R)
- Si hay un CDN o una caché HTTP aguas arriba (Cloudflare, Varnish), purga su caché para las URLs
/admin*/index.php
Modo oscuro: el banner o Adminer no se adaptan
El banner del módulo se adapta automáticamente al modo oscuro del sistema vía la media query @media (prefers-color-scheme: dark). Adminer 5 también tiene su propio modo oscuro integrado que sigue la misma preferencia del sistema.
Si el renderizado no sigue tu modo del sistema:
- Verifica que tu SO está realmente en modo oscuro (Windows: Configuración > Personalización > Colores > Modo oscuro; macOS: Preferencias del Sistema > General > Apariencia: Oscuro)
- El navegador debe transmitir esta preferencia — por defecto Chrome y Firefox lo hacen, pero algunas extensiones de gestión de temas pueden anularla
- Verifica con DevTools Rendering > Emulate CSS media feature prefers-color-scheme que la preferencia es efectivamente dark
Invalid Security Token en una acción de Adminer
Síntoma: ejecutas una consulta SQL o editas una fila, y PrestaShop muestra Invalid Security Token.
Causa probable: este mensaje normalmente nunca aparece con el módulo — el controlador override checkToken() para bypassear el CSRF de PrestaShop en las acciones internas de Adminer. Si lo ves, es que estás accediendo a una URL que no pasa por nuestro controlador.
Solución: verifica que la URL en la barra del navegador comienza con index.php?controller=AdminDfAdminer&token=.... Si comienza con index.php?select=... sin el parámetro controller, el post-procesamiento de URLs fue eludido — vacía las cachés de PrestaShop y del navegador, y vuelve a abrir Adminer desde el menú.
Arquitectura técnica
Para los desarrolladores o administradores curiosos que quieren entender cómo funciona el módulo internamente.
Auto-login: pre-poblamiento de sesión
El loader views/adminer/loader.php inicia la sesión de Adminer antes de que adminer.php se cargue:
- Cierra cualquier sesión PHP en curso vía
session_write_close()(PS9 puede haber iniciado una vía Symfony) - Inicia una nueva sesión con
session_name('adminer_sid') - Pre-populate
$_SESSION[pwds][server][host][user]con la contraseña real de la base, leída desde_DB_PASSWD_ - Pre-populate
$_SESSION[db][server][host][user][dbname] = true - Define
$_GET[username],$_GET[db],$_GET[server]con los valores de PrestaShop - Carga
adminer.php
Cuando Adminer se inicializa, ve que la constante SID ya está definida y omite su propio session_start(). Ve $_SESSION[pwds] no vacío y omite también la restauración mediante cookie permanente. La verificación de auth pasa directamente, Driver::connect() usa la contraseña real vía el método credentials() de nuestra clase, y login() devuelve true.
Bypass del CSRF de PrestaShop
Los formularios POST internos de Adminer (ejecución de consulta SQL, edición de fila, eliminación de tabla) no llevan el token CSRF por controlador de PrestaShop. Sin intervención, PS rechaza estas peticiones con una pantalla Invalid Security Token.
El controlador AdminDfAdminerController override el método checkToken() para devolver true sin verificación. Es seguro porque la puerta SuperAdmin (id_profile === 1) aguas arriba es estrictamente más fuerte que un token CSRF: un atacante que ya tenga una sesión SuperAdmin robada ya tiene acceso completo al back office de todos modos.
Reescritura de las URLs de Adminer
Adminer construye sus enlaces internos como index.php?select=table_name&db=ps. Sin reescritura, estas URLs no llevan controller=AdminDfAdminer y PrestaShop las enrutaría al dashboard.
El controlador llama a ob_start() con un callback que post-procesa la salida HTML de Adminer: inyección del banner de retorno BO al inicio del body, y reescritura de todos los atributos href, action y src que apuntan a index.php?... para inyectar controller=AdminDfAdminer& justo después del ?.
Supervivencia a los exit; de Adminer
Adminer hace 19 llamadas a exit; en varios puntos (page_footer, file= serving para los assets, fin de error). Un simple ob_get_clean() al final del controlador nunca se alcanzaría en esos casos.
La solución: pasar el callback de post-procesamiento directamente a ob_start(). PHP llama automáticamente al callback en el momento del flush final del buffer, incluso si se llamó a exit;. Todas las salidas de Adminer pasan entonces por el post-procesamiento, sin excepción.
Compatibilidad PrestaShop 9
El módulo está probado en PrestaShop 8.0, 8.1, 8.2 y 9.0. La compatibilidad PS 9 se obtiene utilizando exclusivamente los patrones legacy soportados por ambas versiones:
ModuleAdminControlleren lugar de Symfony controllers — soportado en PS 8 y PS 9- Smarty para la plantilla de configuración — soportado nativamente
- Instalación de pestaña vía la clase
Tab— API estable entre versiones - Sin clases Symfony específicas, sin bundle requerido
- PSR-4 autoload sin Composer (cargado vía
require_onceen el main module)
En PS 9, el módulo funciona sin modificación, sin recompilación, sin composer install.
Licencia y código fuente
El módulo DataFirefly está bajo licencia comercial (DataFirefly Limited, Ireland). El código fuente se entrega sin cifrar en el ZIP — puedes auditarlo, extender los hooks, o adaptar el comportamiento (por ejemplo añadir otros perfiles autorizados a abrir Adminer).
Adminer en sí está bajo doble licencia Apache 2.0 / GPL 2.0, creado por Jakub Vrana. El archivo adminer.php empaquetado es la versión estable 5.4.2 sin cambios — puedes reemplazarlo por cualquier versión de Adminer compatible respetando la licencia original.
Soporte
El soporte está incluido durante 12 meses después de la compra (24h laborables, FR/EN). Para cualquier pregunta:
- Email: support en datafirefly.com
- Área de cliente: datafirefly.com/es/mi-cuenta
Para bugs o solicitudes de evolución, especifica tu versión de PrestaShop, versión PHP, hosting y versión del módulo instalada.