Archivo del Autor: admin

php

Una clase PHP para la pasarela de pagos redsys / sermepa

La clase sermepa actualmente Redsys sirve para generar el formulario que se comunicará con la pasarela de pagos que usan muchos bancos, como Santander, Sabadell, Lacaixa, etc.

Es una versión que irá creciendo y actualizándose poco a poco y mejorándolo.

https://github.com/ssheduardo/sermepa

Requerimientos mínimos

PHP 5 >= 5.3.0, PHP 7.1, 8.0

Instalación

Si usas composer tienes 2 opciones

1.- Por línea de comandos

composer require sermepa/sermepa

2.- Creas o agregas a tu archivo composer.json la siguiente dependencia:

{
   "require": {
      "sermepa/sermepa": "^1.3.2"
   }
}

Luego ejecutas:

composer update

Si en caso contrario no usas composer, bastará con clonar el repositorio

git clone https://github.com/ssheduardo/sermepa.git

¿Cómo usar la clase?

Ejemplo:

//Si usas composer
//include_once('vendor/autoload.php');

//Si clonaste la clase
//include_once('sermepa/src/Sermepa/Tpv/Tpv.php');

try{
    //Key de ejemplo
    $key = 'sq7HjrUOBfKmC576ILgskD5srU870gJ7';

    $redsys = new Sermepa\Tpv\Tpv();
    $redsys->setAmount(rand(10,600));
    $redsys->setOrder(time());
    $redsys->setMerchantcode('999008881'); //Reemplazar por el código que proporciona el banco
    $redsys->setCurrency('978');
    $redsys->setTransactiontype('0');
    $redsys->setTerminal('1');
    $redsys->setMethod('C'); //Solo pago con tarjeta, no mostramos iupay
    $redsys->setNotification('http://localhost/noti.php'); //Url de notificacion
    $redsys->setUrlOk('http://localhost/ok.php'); //Url OK
    $redsys->setUrlKo('http://localhost/ko.php'); //Url KO
    $redsys->setVersion('HMAC_SHA256_V1');
    $redsys->setTradeName('Tienda S.L');
    $redsys->setTitular('Pedro Risco');
    $redsys->setProductDescription('Compras varias');
    $redsys->setEnvironment('test'); //Entorno test

    $signature = $redsys->generateMerchantSignature($key);
    $redsys->setMerchantSignature($signature);

    $form = $redsys->createForm();
} catch (\Sermepa\Tpv\TpvException $e) {
    echo $e->getMessage();
}
echo $form;

Con esto generamos el form para la comunicación con la pasarela de pagos.

Enviar datos de la tarjeta

Si queremos enviar los datos de la tarjeta para que no nos lo solicite la pasarela de pagos, podemos hacerlo de la siguiente forma.

try{
    $key = 'sq7HjrUOBfKmC576ILgskD5srU870gJ7';

    $redsys = new Sermepa\Tpv\Tpv();
    $redsys->setAmount(rand(10,600));
    $redsys->setOrder(time());
    $redsys->setMerchantcode('999008881'); //Reemplazar por el código que proporciona el banco
    $redsys->setCurrency('978');
    $redsys->setTransactiontype('0');
    $redsys->setTerminal('1');
    $redsys->setMethod('C'); //Solo pago con tarjeta, no mostramos iupay
    $redsys->setNotification('http://localhost/noti.php'); //Url de notificacion
    $redsys->setUrlOk('http://localhost/ok.php'); //Url OK
    $redsys->setUrlKo('http://localhost/ko.php'); //Url KO
    $redsys->setVersion('HMAC_SHA256_V1');
    $redsys->setTradeName('Tienda S.L');
    $redsys->setTitular('Juan Risco');

    $redsys->setPan('4548812049400004'); //Número de la tarjeta
    $redsys->setExpiryDate('2012'); //AAMM (año y mes)
    $redsys->setCVV2('123'); //CVV2 de la tarjeta

    $redsys->setEnvironment('test'); //Entorno test

    $signature = $redsys->generateMerchantSignature($key);
    $redsys->setMerchantSignature($signature);

    $form = $redsys->createForm();
} catch (\Sermepa\Tpv\TpvException $e) {
    echo $e->getMessage();
}
echo $form;

Pago con referencia

Esta operativa nos permite guardar los datos de la tarjeta. SIS almacena la tarjeta y devuelve la referencia que deberá ser almacenada por el comercio.

Imaginemos que en el ejemplo anterior, queremos guardar los datos de la tarjeta, solo bastará con agregar el método setIdentifier(). Cuando se haga el llamado a la url de notificación, éste nos devolverá Ds_Merchant_Identifier y Ds_ExpiryDate.

//Para una nueva referencia agregar este método al ejemplo anterior
$redsys->setIdentifier();

//En la url de notificación nos devolverá algo como esto
Array
(
    [Ds_Date] => 17%2F02%2F2022
    [Ds_Hour] => 23%3A25
    [Ds_SecurePayment] => 1
    [Ds_Card_Number] => 491801******4602
    [Ds_ExpiryDate] => 3212
    [Ds_Merchant_Identifier] => 2214a9c5ac0bd6e0fg476e6b3468ac4fa38a592c
    [Ds_Card_Country] => 724
    [Ds_Amount] => 0
    [Ds_Currency] => 978
    [Ds_Order] => 1645136683
    [Ds_MerchantCode] => 999008881
    [Ds_Terminal] => 001
    [Ds_Response] => 0000
    [Ds_MerchantData] =>
    [Ds_TransactionType] => 0
    [Ds_ConsumerLanguage] => 1
    [Ds_AuthorisationCode] => 005090
    [Ds_Card_Brand] => 1
    [Ds_Merchant_Cof_Txnid] => 2202172334011
    [Ds_ProcessedPayMethod] => 1
    [Ds_Control_1645136701458] => 1645136701458
)

Ahora bien, si queremos realizar otro cobro sin que nos pidan los datos de la tarjeta para ese mismo usuario, bastará con pasar el Ds_Merchant_Identifier anterior en el método setIdentifier().

Cada banco tiene un sistema de seguridad a través de un código de SMS, tarjeta de coordenadas, etc. que se mostrará para completar la transacción.

$redsys->setIdentifier(2214a9c5ac0bd6e0fg476e6b3468ac4fa38a592c);

//En la url de notificación nos devolverá algo como esto
Array
(
    [Ds_Date] => 17%2F02%2F2022
    [Ds_Hour] => 23%3A28
    [Ds_SecurePayment] => 1
    [Ds_Card_Number] => 491801******4602
    [Ds_Merchant_Identifier] => 2214a9c5ac0bd6e0fg476e6b3468ac4fa38a592c
    [Ds_Card_Country] => 724
    [Ds_Amount] => 12000
    [Ds_Currency] => 978
    [Ds_Order] => 1645136909
    [Ds_MerchantCode] => 999008881
    [Ds_Terminal] => 001
    [Ds_Response] => 0000
    [Ds_MerchantData] =>
    [Ds_TransactionType] => 0
    [Ds_ConsumerLanguage] => 1
    [Ds_AuthorisationCode] => 078737
    [Ds_Card_Brand] => 1
    [Ds_Merchant_Cof_Txnid] => 2202172334011
    [Ds_ProcessedPayMethod] => 1
    [Ds_Control_1645136925978] => 1645136925978
)

Si no queremos que nos muestre ninguna pantalla y directamente realice el pago debemos hacer uso del método setMerchantDirectPayment():

$redsys->setMerchantDirectPayment(true);

También podemos hacer los cobros recurrentes a traves de Rest.

try{
    //Key de ejemplo
    $key = 'sq7HjrUOBfKmC576ILgskD5srU870gJ7';

    $redsys = new Sermepa\Tpv\Tpv();
    $redsys->setAmount(rand(20,80));
    $redsys->setOrder(time());
    $redsys->setMerchantcode('999008881'); //Reemplazar por el código que proporciona el banco

    $redsys->setCurrency('978');
    $redsys->setTransactiontype('0');
    $redsys->setTerminal('1');
    $redsys->setIdentifier('2214a9c5ac0bd6e0fg476e6b3468ac4fa38a592c');
    $redsys->setVersion('HMAC_SHA256_V1');
    $redsys->setEnvironment('restTest'); //Rest entorno test
    $redsys->setMerchantCofIni('N');
    $redsys->setMerchantDirectPayment(true);

    $redsys->setMerchantCofTxnid(2202172334011);

    $signature = $redsys->generateMerchantSignature($key);
    $redsys->setMerchantSignature($signature);

    $response = json_decode($redsys->send(), true);

    $parameters = $redsys->getMerchantParameters($response['Ds_MerchantParameters']);
    $DsResponse = $parameters["Ds_Response"];
    $DsResponse += 0;
    if ($redsys->check($key, $response) && $DsResponse <= 99) {
        //Si es todo correcto ya podemos hacer lo que necesitamos, para este ejemplo solo mostramos los datos.
        print_r($parameters);
    } else {
        //acciones a realizar si ha sido erroneo
    }

} catch (\Sermepa\Tpv\TpvException $e) {
    echo $e->getMessage();
}

Comprobación de Pago

Podemos comprobar si se ha realizado el pago correctamente. Para ello necesitamos setear la clave del banco y pasar la variable $_POST que nos devuelve en la URL de notificación o de retorno. Tener en cuenta que debemos realizar esta comprobación en la url de notificación. Por ejemplo, en el fichero que es llamado por la URL de retorno:

try{
    $redsys = new Sermepa\Tpv\Tpv();
    $key = 'sq7HjrUOBfKmC576ILgskD5srU870gJ7';

    $parameters = $redsys->getMerchantParameters($_POST["Ds_MerchantParameters"]);
    $DsResponse = $parameters["Ds_Response"];
    $DsResponse += 0;
    if ($redsys->check($key, $_POST) && $DsResponse <= 99) {
        //acciones a realizar si es correcto, por ejemplo validar una reserva, mandar un mail de OK, guardar en bbdd o contactar con mensajería para preparar un pedido
    } else {
        //acciones a realizar si ha sido erroneo
    }
} catch (\Sermepa\Tpv\TpvException $e) {
    echo $e->getMessage();
}

https://github.com/ssheduardo/sermepa

Download-Official-Remix-OS-

Como descargar e instalar Remix OS 2

1. Prepara todos los archivos

En Windows, hazte tanto con la herramienta USB de Remix como con la ISO de Remix OS. La herramienta ocupa poco más de 4 MB, mientras que la ISO son 2 Gb, que la persona que lo filtró ha comprimido en algo más de 600 MB.

El Windows Defender de Windows 10 se empeña en detectar la herramienta de grabación USB como malware, así que la borrará una y otra vez nada más que termines de descargarla, a no ser que desactives la protección en tiempo real (bajo tu propia responsabilidad, claro).

Si tienes la ISO en formato comprimido, descomprímela en alguna carpeta de tu disco duro.

2. Formatea tu pendrive en FAT32

Necesitarás un pendrive de gran capacidad para grabar Remix OS. Si ya está formateado en FAT32, no necesitas hacer nada más (salta al paso 3), pero si no es así, debes formatearlo primero.

Para comprobar el formato de tu memoria USB, ve al Administrador de archivos, haz clic derecho y elige Propiedades. En la carpeta General aparece el sistema de archivos, que generalmente será FAT32 o NTFS.

Si tu memoria está formateada en NTFS, haz clic derecho sobre ella en el Administrador de archivos y elige Formatear. En sistema de archivos, elige FAT32. Si está activado el Formateo rápido (recomendado) el proceso toma apenas un par de segundos.

3. Graba la ISO en la memoria

De vuelta a los archivos que descargaste antes, inicia la utilidad USB de Remix (remix-usb-tool.exe). En el apartado ISO File, pulsa Browse para seleccionar la imagen ISO que descomprimiste en alguna carpeta de tu disco duro.

En USB Disk, elige la letra de la unidad de la memoria USB. Asegúrate de que es la correcta, si bien la aplicación parece detectarla automáticamente por ti. Cuando estés listo, pulsa OK para que comience la copia de los archivos.

Aquí es el momento de que tu puerto USB 3.0 y memoria USB se luzcan. El proceso tarda unos cuantos minutos en completarse. Paciencia.

4. Inicia tu PC desde la memoria USB

Reinicia tu PC y asegúrate de que se inicia desde la memoria USB. La mayoría de las BIOS te permiten seleccionar el orden de los dispositivos de arranque, pero además es cada vez más común que el sistema te permita cambiarlo fácilmente pulsando alguna tecla durante el arranque (por ejemplo, F2). Si tienes dudas, consulta el manual de tu PC o placa base.

En Windows 10 a veces cuesta un poco más hacer un reinicio completo, pero lo puedes forzar desde las Opciones > Actualizaciones y Seguridad > Recuperación > Inicio avanzado.

5. Inicia la instalación

Si todo ha ido bien, una ventana te dará la bienvenida a la instalación de Remix OS, dándote la opción de elegir entre un modo invitado o residente.

El modo invitado te permite probar el sistema operativo sin compromiso, pero no guardará tu información y aplicaciones cuando termines de usarlo. El modo residente sí guarda esta información.

Yo he elegido modo Residente, lo cual inicia la instalación que, una vez más, tomará unos cuantos minutos. Ten paciencia, ya estás muy cerca de poder probar esta curiosa versión de Android.

6. Configura Remix OS

Enhorabuena, ya tienes Remix OS listo para usar, pero antes de nada, al igual que cuando inicias Android por primera vez en un teléfono, tienes que establecer unos cuantos ajustes.

Lo primero es el idioma (inglés o chino), después tendrás el acuerdo de licencia de rigor y, por último, pulsando el botón Start ya podrás empezar a usar Remix OS 2.0 en tu PC.

Etiquetas especiales Contact Form 7

Como guardar una base de datos de formularios recibidos con Contact Form 7 en Wordpress

¿Por qué deberías guardar los mensajes en la Base de Datos?

Te listo a continuación algunas ideas de por qué deberías implementar esta solución:

Leer más: Como guardar una base de datos de formularios recibidos con Contact Form 7 en Wordpress
  • Problemas de correo: Los servidores de correos pueden tener fallos o caídas impidiendo que los emails lleguen a su destino. Con esta solución podrías tener una copia del mensaje en tu base de datos, a pesar de que no te haya llegado ningún correo.
  • Exportar información: Tal vez necesites guardar estos datos para luego exportarlos y hacer algún seguimiento o análisis específico.
  • Libreta de direcciones: Tal vez necesites armar una agenda de todas las personas que te contactan para luego hacer un seguimiento (como un CRM).

Para todas estas situaciones usaremos el plugin «Flamingo» el cual se adapta a la perfección al «Contact Form 7» ya que está desarrollador por el mismo programador (Takayuki Miyoshi). Puedes descargarlo siguiendo este enlace

No tendrás que configurar NADA

Tal como lo lees, para utilizar este plugin no tienes que hacer nada más que instalarlo.

Una vez instalado, se creará un nuevo menú llamado «Flamingo» con los siguientes submenús:

Libreta de direcciones

En esta pantalla verás solamente los datos personales de las personas que envían sus mensajes a través de los distintos formularios de tu página Web.

En caso de que una persona envíe más de un formulario, no se duplica el registro, pero sí que se actualiza la columna de «Historial», desde donde podrás acceder a cada uno de los mensajes enviados.

También tienes el botón de «Exportar» el cual te permite rápidamente descargar todos los contactos en un fichero con formato .CSV tal como se muestra a continuación.

contactos.csv
"Correo electrónico","Nombre completo","Nombre","Apellidos" "jperez@gmail.com","Juan Pérez","","" "mgelves@gmail.com","mgelves","","" "pgonzalez@gmail.com","Pedro González","","" "wapuu@wordpress.example","Un comentarista de WordPress","",""

Mensajes Entrantes

Desde esta pantalla podrás ver y gestionar todos los mensajes que envían los usuarios a través de tus formularios.

Estos son algunos de los puntos más importantes de esta pantalla:

  1. Asunto: Por defecto Flamingo guarda el «Asunto» del formulario como título de los mensajes.
  2. Canal: Esta columna indica cuál es el formulario de origen del mensaje. Si haces clic en él puedes filtrar los mensajes por formularios.
  3. Exportar: Al igual que la página anterior puedes exportar los mensajes en un fichero con formato .CSV el cual tiene la siguiente estructura:
mensajes.csv
"your-name","your-email","your-subject","your-message","file-298","Fecha" "Juan Pérez","jperez@gmail.com","2do email que envío","Este es el segundo email que envío para revisar el historial.","","2020-05-05T15:49:44+00:00" "Juan Pérez","jperez@gmail.com","Prueba con fichero","Envío un formulario con una imagen.","600_162649732.jpeg","2020-05-05T15:25:41+00:00" "Pedro González","pgonzalez@gmail.com","Prueba de envío","Este es el cuerpo del mensaje","","2020-05-05T15:22:43+00:00"

Cómo cambiar los campos de los mensajes entrantes

Como te contaba en el punto anterior, los campos de los mensajes entrantes se guardan a partir de los campos [your-subject][your-name] y [your-email] que se crean por defecto cada vez das de alta un nuevo formulario.

Pero podrías cambiar estos valores para que se ajusten a los campos que hayas creado para tu proyecto. Solo tienes que ir a la pestaña de «Ajustes Adicionales» del formulario en cuestión y agregar el siguiente código pero con el ID de tus propios campos:

Pestaña de «Ajustes adicionales»
flamingo_email: "[email-usuario]" flamingo_name: "[nombre-usuario]" flamingo_subject: "[titulo-de-mensaje]"
migrate database

Como migrar tu base de datos a Amazon RDS

Paso 1: Cree una nueva base de datos en Amazon RDS

Comience por crear una nueva base de datos en Amazon RDS, como se describe a continuación:

  • En la página «Seleccionar motor», seleccione «MySQL» como motor de base de datos. Luego, haga clic en el botón «Seleccionar» para continuar.
  • Sobre la resultante «¿Producción?» página, elija entre escenarios de uso de producción o no producción. Tenga en cuenta que el nivel de uso gratuito de AWS solo se aplica a las instancias que no son de producción. Luego, haga clic en el botón «Siguiente paso» para continuar.
  • En la página resultante «Especificar detalles de la base de datos», ingrese los detalles de la base de datos que desea crear, especialmente la clase de instancia, el tipo de almacenamiento y el tamaño de almacenamiento asignado.
  • En la misma página, especifique un nombre exclusivo para la instancia de la base de datos, junto con un nombre de usuario y una contraseña. Luego, haga clic en el botón «Siguiente paso» para continuar.
  • En la página resultante «Configurar ajustes avanzados», deje todos los valores en su configuración predeterminada y seleccione la opción «Crear nuevo grupo de seguridad» en el campo «Grupos de seguridad de VPC». O, si tiene un grupo de seguridad existente que permite conexiones remotas al puerto MySQL (3306), seleccione ese grupo de seguridad en su lugar.
  • En la misma página, en la sección «Opciones de base de datos», especifique un nombre para la nueva base de datos. En este ejemplo, la nueva base de datos se llama wordpress. Esta base de datos se creará automáticamente una vez que se inicie la instancia de la base de datos.
  • Haga clic en el botón «Iniciar instancia de base de datos» para continuar.

Ahora se lanzará su nueva instancia de base de datos.

Haga clic en el botón «Ver sus instancias de base de datos» para ver la lista de instancias en ejecución.

Paso 2: habilite el acceso del grupo de seguridad

Una vez que su instancia de base de datos se esté ejecutando, el siguiente paso es permitir el acceso remoto al servidor de base de datos MySQL. Para hacer esto:

  • Inicie sesión en el Amazon RDS dashboard.
  • Seleccione el elemento de menú «Instancias».
  • Seleccione y expanda el registro de la instancia de base de datos MySQL recién lanzada.
  • Seleccione el grupo de seguridad actual. Esto abrirá una nueva ventana del navegador que contiene la sección «Grupos de seguridad» del panel de EC2 y con el grupo de seguridad actual preseleccionado.
  • Seleccione la pestaña «Entrante» del grupo de seguridad.
  • Haga clic en el botón «Editar».

En la ventana emergente «Editar reglas de entrada», haga clic en el botón «Agregar regla» y especifique una nueva regla de la siguiente manera:

  • Tipo: MySQL
  • Protocolo: TCP
  • Rango de puertos: 3306
  • Fuente: IP personalizada
  • Dirección IP: la dirección IP pública de su servidor de aplicaciones Bitnami en formato CIDR. Por ejemplo, si la dirección IP pública de su servidor de aplicaciones Bitnami es 101.102.103.104, especifique la dirección IP como 101.102.103.104/32.
  • Haga clic en «Guardar» para guardar sus cambios.

Paso 3: deshabilite el acceso de escritura a la aplicación

Ahora puede migrar la base de datos de su aplicación a Amazon RDS. Sin embargo, antes de hacer esto, debe deshabilitar el acceso de escritura a la aplicación para que la base de datos original y la nueva permanezcan sincronizadas.

El método para hacer esto varía de una aplicación a otra. En algunos casos, la propia aplicación ofrece un «modo de mantenimiento» que se puede activar durante la migración de datos. En otros, es posible que deba descargar un complemento de modo de mantenimiento para este propósito. Si ninguna de estas opciones está disponible, debe deshabilitar manualmente el acceso de inicio de sesión redirigiendo a los usuarios a una página de mantenimiento estática.

Step 4: Export The Application Database From Your Bitnami Stack

El siguiente paso es exportar la base de datos de la aplicación. Puede hacerlo utilizando la herramienta de línea de comandos mysqldump o la aplicación phpMyAdmin basada en navegador.

Using PhpMyAdmin

También puede lograr esto con la aplicación phpMyAdmin basada en navegador incluida de forma predeterminada con las pilas de Bitnami.

  • Inicie sesión en la aplicación phpMyAdmin.
  • Seleccione la base de datos de la aplicación en el menú de navegación izquierdo. En este ejemplo, la base de datos se llama bitnami_wordpress.
  • Seleccione el elemento de menú «Exportar».
  • En la página resultante, seleccione el método de exportación «Rápido» y el formato de salida «SQL».
  • Haga clic en «Ir».

Se creará un archivo de exportación SQL y se descargará en su escritorio. Guarde este archivo con cuidado, ya que lo necesitará en el próximo paso.

Paso 5: Importe la base de datos de la aplicación a Amazon RDS

El siguiente paso es importar la base de datos de la aplicación a su instancia de base de datos RDS. Nuevamente, puede lograr esto utilizando la herramienta de línea de comandos o la aplicación phpMyAdmin basada en navegador.

Using PhpMyAdmin

También puede lograr esto con la aplicación phpMyAdmin basada en navegador incluida con la pila de Bitnami. Sin embargo, primero es necesario configurar phpMyAdmin para conectarse a su instancia de base de datos RDS, como se describe a continuación:

  • Inicie sesión en la consola de su servidor a través de SSH.
  • Edite el archivo de configuración de phpMyAdmin en /opt/bitnami/apps/phpmyadmin/htdocs/config.inc.php y agregue las siguientes líneas al final del archivo:
$i++;
  $cfg['Servers'][$i]['verbose'] = 'Amazon RDS';
  $cfg['Servers'][$i]['host'] = 'RDS-ENDPOINT';
  $cfg['Servers'][$i]['port'] = '3306';
  $cfg['Servers'][$i]['socket'] = '';
  $cfg['Servers'][$i]['connect_type'] = 'tcp';
  $cfg['Servers'][$i]['extension'] = 'mysqli';
  $cfg['Servers'][$i]['auth_type'] = 'cookie';
  $cfg['Servers'][$i]['AllowNoPassword'] = false;
  • Recuerde reemplazar el marcador de posición RDS-ENDPOINT en el código anterior con el punto final real de su instancia de base de datos de Amazon RDS. Estas líneas permitirán acceder a su instancia de base de datos de Amazon RDS a través de phpMyAdmin.
  • Guarda el archivo.

Next:

  • Vaya a la aplicación phpMyAdmin y seleccione el servidor «Amazon RDS».
  • Inicie sesión con el nombre de usuario y la contraseña de la base de datos que definió en el Paso 1.
  • Seleccione la nueva base de datos en el menú de navegación izquierdo. En este ejemplo, la nueva base de datos se llama wordpress según la entrada que proporcionó en el Paso 1.
  • Seleccione el elemento de menú «Importar».
  • En la página resultante, seleccione el archivo de exportación de SQL creado en el Paso 4.
  • Haga clic en «Ir».

El contenido de la base de datos de la aplicación original ahora se importará a la nueva base de datos de Amazon RDS. Se mostrará un mensaje de confirmación.

Paso 6: Reconfigure la aplicación para usar la nueva base de datos

Una vez que su base de datos se haya transferido a Amazon RDS, el siguiente paso es actualizar la configuración de su aplicación y señalarla a la nueva base de datos. El procedimiento para hacer esto varía de una aplicación a otra, pero normalmente implica modificar un archivo de configuración y especificar el nuevo host de la base de datos, el nombre de usuario y la contraseña de la base de datos y el nuevo nombre de la base de datos.

Por ejemplo, para actualizar la configuración de WordPress, edite el archivo en /opt/bitnami/apps/wordpress/htdocs/wp-config.php y modifique las distintas variables de configuración como se muestra en la siguiente imagen:

Paso 7: Vuelva a habilitar el acceso de escritura a la aplicación

Ahora puede desactivar el modo de mantenimiento y volver a habilitar el acceso completo a la aplicación, invirtiendo los pasos realizados en el Paso 3.

tag manager

Que es y para que sirve Google Tag Manager

A estas alturas, casi todos habréis oído hablar alguna vez del administrador de etiquetas de Google  (o Google Tag Manager). Quizá tengáis claro en qué consiste… o quizá no.

En este post pretendemos asentar algunas ideas básicas sobre qué es y para qué se utiliza esta estupenda herramienta que, a la larga, cambiará nuestra forma de implementar, por ejemplo, los seguimientos de Google Analytics, píxeles de conversión de Google AdWords, o de trackear todo tipo de campañas de publicidad online.

De este modo, se modificará para siempre la relación entre departamentos de IT y Marketing de grandes empresas (agilizando procesos como el lanzamiento de nuevas campañas publicitarias); y se simplificará la vida de agencias de Marketing Online a la hora de realizar el mantenimiento de códigos de seguimiento y píxeles variados en numerosos sitios webs.

¿En qué consiste Tag Manager?

Se trata de un código <script> que genera un iframe contenedor que, al ser colocado justo tras la apertura del <body> en una página web, reemplazará la mayoría de las etiquetas de seguimiento de campañas y herramientas que antes solíamos instalar una a una. Por ejemplo, para realizar una correcta medición de campañas SEM, para instalar herramientas de analítica web o para A/B testing.

Para configurar el contenedor e indicar qué etiquetas queremos que se activen y en qué páginas, hemos de acceder a la herramienta online Google Tag Manager . Su interfaz ha mejorado bastante con los cambios sucesivos, asemejándose a otras herramientas de Google. Aún así, si tenemos en cuenta la complejidad de la materia que estamos tratando y los enormes beneficios que aportará su comprensión, resulta lógico tener que formarse un poco para llegar a manejarla y exprimirla del todo.

¿Para qué sirve el Administrador de Etiquetas de Google?

¿Nunca os ha pasado que queréis lanzar una campaña de anuncios patrocinados o remarketing y desde vuestro departamento de programación os comunican que no es posible hasta tal día que se sube la web a producción? O, en el caso de las agencias, ¿no sentís que tenéis dependencia de vuestros proveedores de desarrollo web para implementar ciertas tags en el código fuente? ¿No os gustaría poder tener el control, un contenedor para gobernarlos a todos? Si la respuesta a alguna de esas preguntas es que sí, estáis de enhorabuena.

Con Google Tag Manager, en lugar de tener que andar modificando código en diferentes páginas o includes, para insertar una nueva tag, o tener que estar revisando una lista interminable de archivos para ver dónde están puestas ciertas etiquetas que toca eliminar, bastará con consultar un panel de administración y trabajar con etiquetas, activadores y variables.

En la imagen anterior se muestran algunas de las plantillas de etiqueta disponibles en Google Tag Manager, como ejemplo, pero existen otras muchas utilidades de Tag Manager que ayudarán a simplificar y automatizar procesos de marketing. Estos son algunos ejemplos de etiquetas aceptadas actualmente, que te pueden sacar de un apuro:

  • Seguimiento de conversiones de Google AdWords (¡también sin thank you page!) y configuración de conversiones de llamada (número de reenvío de AdWords).
  • Etiquetas de Remarketing de AdWords y Remarketing Dinámico: hace mucho tiempo había que ir página a página —o por grupos de contenido— introduciendo manualmente las diferentes etiquetas de remarketing de Google para las diferentes listas de usuarios (¡increíble pero cierto!). Nuestra teoría es que el desarrollo de Google Tag Manager, aparte de la utilidad que nos aporta a todas las agencias y departamentos de marketing, fue en parte respuesta de Google a la necesidad de tener una etiqueta de remarketing dinámica (otros ya la tenían antes que él).
  • Seguimiento de Google Analytics, con todo tipo de implementaciones avanzadas al alcance de la mano, minimizando la utilización de código al mínimo y necesario —la dataLayer—. Podrás utilizar GTM para generar de eventos automáticos de clic, formulario, temporizador, etc., páginas virtuales, seguimiento de e-commerce, seguimiento de subdominios y multidominio, user ID, agrupaciones de contenido, dimensiones y métricas personalizadas…
  • ¡Traffickers! Etiquetas de conversión y de contador de DoubleClick, Marin Software, ClickTale, comScore
  • Etiquetas de imagen y HTML personalizadas: este último punto abre un mundo de posibilidades casi infinito, a excepción de unas pocas etiquetas (síncronas, en dos partes, etc.) que no se pueden utilizar y que tienden a desaparecer…

Eliminar correo antiguo de tu servidor con Cpanel

En ocasiones querremos eliminar correos antiguos porque ocupan espacio y no los necesitamos, de una cuenta determinada, desde una fecha determinada en adelante o simplemente porque necesitamos espacio libre en nuestro hosting.

Para ello el hosting cPanel prevé una opción muy útil en la sección de «Correo Electrónico» denominada «Email Disk Usage» para no llegar al límite de espacio que tenemos en el disco duro.

Accediendo a la opción de cPanel – Email Disk Usage

Accedemos al panel de control cpanel y buscamos la opción:

Selección de cuentas de correo

Al acceder observamos un desplegable «Account» que contiene todas las cuentas de correo electrónico que hemos creado y desde seleccionaremos cuenta por cuenta para eliminar los emails que deseamos desechar.

Menú de Acciones

Nada más seleccionar una de las cuentas nos encontraremos con una pantalla similar a la siguiente:

Cada carpeta, ya sea la del INBOX (Bandeja de entrada), TRASH (Papelera), SENT (Enviados) o DRAFTS (Borradores), etc. dispondrán de un enlace «Manage» en la columna «Acciones» siempre y cuando haya correos en ellas.

Haz clic en «Manage» para hacer visible un nuevo desplegable desde el que seleccionar la acción deseada:

Eliminación de mensajes de email

Si queremos eliminar todos los correos, simplemente usaremos la opción «All messages» y pulsaremos sobre el botón «Delete Permanently» (Borrar permanentemente).
Por el contrario si deseamos usar un filtro concreto para eliminar correos seleccionaremos la opción «Custom query» (Consulta personalizada) y se abrirá un nuevo campo para introducir la consulta como se muestra en la captura de abajo: