PS PrestaShop Intermedio

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.

Actualizado Versión del módulo 1.0.0

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.

En una frase — instala el ZIP, abre el menú Adminer, gestiona tu BDD. El auto-login utiliza las credenciales de la tienda, el acceso está restringido al perfil SuperAdmin.

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:

  1. Ve a Módulos > Gestor de Módulos
  2. Haz clic en Subir un módulo en la parte superior derecha
  3. Arrastra y suelta el archivo dfadminer-1.0.0.zip o haz clic para seleccionarlo
  4. Espera a que termine la subida (unos segundos — el ZIP pesa menos de 400 KB)
  5. 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.

Si la pestaña no aparece — vacía la caché de PrestaShop (Parámetros Avanzados > Rendimiento > Vaciar caché) y recarga el menú. En PrestaShop 9, cierra sesión y vuelve a iniciarla en el back office.

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.

Sesiones Adminer por empleado — cada empleado SuperAdmin tendrá su propia sesión Adminer (las sesiones PHP son por cookie de navegador), pero todos se conectan a la misma base con las mismas credenciales del sistema. No hay cuentas Adminer que gestionar.

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

Conexión saliente requerida — la descarga requiere que tu servidor pueda alcanzar 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.

Consejo — Adminer memoriza el historial de tus consultas SQL en la sesión. Puedes navegar el historial vía el menú History al pie de página, y volver a ejecutar una consulta con un clic.

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:

  1. Descarga el nuevo ZIP desde tu área de cliente DataFirefly
  2. En el BO, Módulos > Gestor de Módulos
  3. Haz clic en Subir un módulo y sube el nuevo ZIP
  4. PrestaShop detecta que ya existe una versión y propone actualizarla
  5. 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:

  1. Ve a Módulos > Gestor de Módulos
  2. Encuentra Database Manager Back Office
  3. 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.php empaquetado)
  • 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:

  1. Abre las DevTools de tu navegador (F12)
  2. Ve a la pestaña Application (Chrome) o Almacenamiento (Firefox)
  3. Sección Cookies, selecciona tu dominio
  4. Elimina las cookies llamadas adminer_sid, adminer_permanent, adminer_key y adminer_version
  5. 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:

  1. Vacía la caché de PrestaShop (Parámetros Avanzados > Rendimiento > Vaciar caché)
  2. Vacía la caché del navegador (Ctrl+Shift+R)
  3. 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:

  1. Cierra cualquier sesión PHP en curso vía session_write_close() (PS9 puede haber iniciado una vía Symfony)
  2. Inicia una nueva sesión con session_name('adminer_sid')
  3. Pre-populate $_SESSION[pwds][server][host][user] con la contraseña real de la base, leída desde _DB_PASSWD_
  4. Pre-populate $_SESSION[db][server][host][user][dbname] = true
  5. Define $_GET[username], $_GET[db], $_GET[server] con los valores de PrestaShop
  6. 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:

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

Para bugs o solicitudes de evolución, especifica tu versión de PrestaShop, versión PHP, hosting y versión del módulo instalada.

¿Te ha resultado útil esta página?

¿Sigues atascado? Contacta con soporte