• By Nacho
  • 30 de diciembre de 2023

Dónde está la cadena de conexión de la base de datos en prestashop 1.6, 1.7 y 8

Dónde está la cadena de conexión de la base de datos en prestashop 1.6, 1.7 y 8

Dónde está la cadena de conexión de la base de datos en prestashop 1.6, 1.7 y 8 1000 565 Nacho

Dificultad Media

Descubre el Código Fuente de PrestaShop y Encuentra la Cadena de Conexión de la Base de Datos

¿Alguna vez te has preguntado cómo funciona el corazón de PrestaShop? En este artículo, te sumergiremos en el código fuente de esta plataforma de comercio electrónico líder. Pero antes de llegar al meollo, veamos por qué es crucial entender dónde reside la cadena de conexión de la base de datos.

Antes de sumergirnos en el código fuente, comprendamos por qué conocer la cadena de conexión de la base de datos en PrestaShop es esencial. Esta información es vital para poder tener acceso a la propia base de datos a través de phpMyAdmin o con programas cono Heidi Sql o bien, a través de las opciones de gestión del servidor, si nos pide usuario y contraseña y no la hemos guardado.

Cómo exportar una base de datos a través del FTP sin tener los datos de la cadena de conexión a base de datos

También es importante, porque con ella podemos exportar la base de datos para tener copias de seguridad. ¿Esto a qué nos ayuda a sacar un marrón? En nuestro caso: teníamos un nuevo cliente, el cual tenía el hosting contratado con una empresa que revendía un hosting básico en Ionos (el antiguo 1&1). No nos daban accesos al servidor porque de dárnoslos, tendríamos acceso a todos sus clientes. Les pedimos que nos dieran una copia de las bases de datos del cliente. Les pusimos el enlace de la guía oficial de Ionos sobre cómo exportar una base de datos en el panel de Ionos. aunque sabíamos cómo hacerlo por experiencia con este proveedor y que esta acción es algo que tardas más en entrar al panel de control que en exportar. Al cliente le pasaron un presupuesto de 150€+IVA por la copia de seguridad de sus bases de datos. ¿WTF?

Como conseguimos que nos dieran unos accesos FTP, montamos un phpMyAdmin, sacamos las claves de los ficheros, accedimos y nos hicimos copias de todo en menos de 15 minutos. ¿Estamos locos o qué? Con el cliente nos marcamos un tanto buenísimo, así que, gracias a todas las empresas piratas y vende humos que nos ayudan a que nos consideren como profesionales, porque no queremos engañarles.  Este artículo os lo dedico.

Ubicando la Cadena de Conexión en PrestaShop 1.6

PrestaShop 1.6, aunque más antiguo, sigue siendo utilizado por muchos. La cadena de conexión se encuentra en el archivo de configuración principal. Dirígete a «/config/settings.inc.php» y busca la variable «$_DB_SERVER» si buscas la cadena de conexión de un PrestaShop 1.6. Ahí encontrarás la información que buscas.

El fichero tendrá este contenido:

<?php
define('_DB_SERVER_', 'localhost');
define('_DB_NAME_', 'NOMBRE_BASE_DE_DATOS');
define('_DB_USER_', 'USUARIO_BASE_DE_DATOS');
define('_DB_PASSWD_', 'CONTRASEÑA_BD');
define('_DB_PREFIX_', 'ps6_');
define('_MYSQL_ENGINE_', 'InnoDB');
define('_PS_CACHING_SYSTEM_', 'CacheMemcache');
define('_PS_CACHE_ENABLED_', '0');
define('_COOKIE_KEY_', 'jmGpioG2a30P4Qfx2a8YGHKRF9HjhASsbPuwpqL4RVustCmSPIhyTHOT');
define('_COOKIE_IV_', 'EQ6NiUzT');
define('_PS_CREATION_DATE_', '2015-07-06');
define('_PS_VERSION_', '1.6.1.1');
define('_RIJNDAEL_KEY_', 'jQs7MDDbec4JpAIaXabCR6BB9N1Xn5em');
define('_RIJNDAEL_IV_', 'JijXP11xgH1oLDWZaizhlA==');
define('_PS_DIRECTORY_', '/../../');

Navegando por PrestaShop 1.7 en Busca de la Cadena de Conexión

La versión 1.7 introdujo cambios significativos en la estructura del directorio. Para encontrar la cadena de conexión en la versión 1.7 de PrestaShop, abre el archivo «/app/config/parameters.php». Dentro, busca las variables relacionadas con la base de datos, como «$database_url».

El código de esta versión es el siguiente:

<?php

use Symfony\Component\Dotenv\Dotenv;

$dotenv = new Dotenv();
$dotenv->load(__DIR__.'/.env');

define('_DB_SERVER_', $_ENV['DB_SERVER']);
define('_DB_NAME_', $_ENV['DB_NAME']);
define('_DB_USER_', $_ENV['DB_USER']);
define('_DB_PASSWD_', $_ENV['DB_PASSWORD']);
define('_DB_PREFIX_', $_ENV['DB_PREFIX']);
define('_DB_PORT_', $_ENV['DB_PORT']);
define('_MYSQL_ENGINE_', $_ENV['MYSQL_ENGINE']);
define('_PS_CACHING_SYSTEM_', $_ENV['PS_CACHING_SYSTEM']);

// ... Otras configuraciones ...

return $container;

En este ejemplo:

  • %database_host%, %database_port%, %database_name%, %database_user%, y %database_password% son marcadores de posición que se rellenarán con los valores reales de la base de datos.
  • %secret%, %locale%, %mailer_host%, %mailer_user%, y %mailer_password% son otros parámetros de la aplicación.

Adentrándonos en el Código Fuente de PrestaShop 1.8

Con la llegada de la versión 1.8, PrestaShop trae nuevas características. Para hallar la cadena de conexión en PrestaShop 8, revisa el archivo «/app/config/parameters.php». Aquí, las variables relevantes son similares a las de la versión 1.7.

El código será este:

<?php

use Symfony\Component\HttpFoundation\Request;

// ... Otras configuraciones ...

// Parámetros de la base de datos
$container->loadFromExtension('doctrine', [
    'dbal' => [
        'connections' => [
            'default' => [
                'driver' => 'pdo_mysql',
                'host' => '%database_host%',
                'port' => '%database_port%',
                'dbname' => '%database_name%',
                'user' => '%database_user%',
                'password' => '%database_password%',
                'charset' => 'utf8mb4',
            ],
        ],
    ],
]);

// ... Más configuraciones ...

// Parámetros de la aplicación
$container->setParameter('secret', '%secret%');
$container->setParameter('locale', '%locale%');
$container->setParameter('mailer_transport', 'smtp');
$container->setParameter('mailer_host', '%mailer_host%');
$container->setParameter('mailer_user', '%mailer_user%');
$container->setParameter('mailer_password', '%mailer_password%');

// ... Otras configuraciones ...

return $container;

La Estructura de Base de Datos de PrestaShop

La base de datos de PrestaShop utiliza MySQL, un sistema de gestión de bases de datos relacional, que es ideal para sitios web de comercio electrónico que manejan grandes volúmenes de datos y transacciones. La estructura de la base de datos está compuesta por numerosas tablas, cada una diseñada para un propósito específico.

Para interactuar con la base de datos de PrestaShop, puedes usar herramientas como phpMyAdmin o con programas como Heidi Sql si el servidor permite conexiones remotas.

Tablas Clave en PrestaShop

Entender algunas de las tablas más importantes te ayudará a manejar mejor tu tienda:

ps_category: Esta tabla guarda la información sobre las categorías de tus productos. Cada categoría tiene un identificador único y detalles como el nombre, la descripción y la imagen asociada.

ps_product: Aquí se almacenan los detalles de cada producto en tu tienda, incluyendo nombre, precio, cantidad en stock, y más.

ps_customer: Contiene información sobre tus clientes, como nombres, correos electrónicos, contraseñas encriptadas, y direcciones.

ps_orders: Registra todos los pedidos realizados en tu tienda, incluyendo detalles del cliente, del pedido y del estado del mismo.

Dejar una Respuesta