Hola,
Tengo instalado del módulo de Eicaptcha en prestashop 1.7 y funciona muy bien, pero solo nos filtra el login y el formulario de contacto, dejándonos un agujero en la subscripción de la newsletter. Acabo de ver un módulo freelance del usuario Prestafan33 que nos da una solución para el agujero de newsletter, aunque sólo sirve para Prestashop 1.7.1 en adelante(Módulo gratis recaptcha v3 login+formulario contacto + newsletter).
Si ya tenéis la base de datos llena de correos spam y bots, os dejo aquí como borrar de forma selectiva y masiva usuarios de la base de datos de nuestro newsletter, tanto para dar de baja usuarios que no quieran seguir recibiendo nuestra newsletter, como para eliminar cuentas de spam y bots de forma masiva.
Lo primero hacer una copia de seguridad de la base de datos antes de ponerse a borrar, después ponerse a borrar como si no hubiera mañana:
1-. Borrado de usuario desde back office (de uno en uno)
2-. Borrado de usuarios desde phpMyAdmin (de uno en uno y de forma masiva)
1-. Borrado de usuario desde back office. Nos vamos a nuestro Back Office y desde el panel de la izquierda vamos a Módulos/Module Manager. Ponemos en el buscador email y nos aperece nuestro módulo de newsletter (Suscripción a nuestro boletín de noticias).
El borrado es manual y podemos hacerlo solo de uno en uno:
- Directamente desde la lista de la parte inferior, vamos clicando en todos los check verdes de las cuentas que queremos eliminar. Nos aprecerán varias páginas de listas (si tenemos muchos usuarios).
- Utilizando la barra de búsqueda e introduciendo el email en cuestión que queremos dar de baja. Una vez realizada la búsqueda nos aparecerá el email en la lista de la parte inferior, junto con un check en verde que nos indica que está activo, si pulsamos encima del check eliminamos esa cuenta del newsletter.
NOTA: Si no os aparece nada al realizar la búsqueda es probable que hayáis escrito mal la dirección, o bién, habéis dejado un espacio en blanco justo al final del email.
2-. Borrado de usuarios desde phpMyAdmin. Desde nuestra consola de phpMyAdmin entraremos en nuestra base de datos y dentro de ella buscaremos la tabla "ps_emailsubscription" para Prestashop 1.7, para versiones anteriores de prestashop esta tabla es "ps_newsletter".
Aquí tenemos:
- Borrado manual (uno a uno desde la misma tabla) igual que en nuestro back office.
- Borrado automático seleccionando un intervalo de usuarios según un valor de nuestra tabla (se puede seleccionar, por edad, fecha, pais... ). Voy a poner como ejemplo el ID que da prestashop.
Borrado manual. Una vez que estamos en la tabla "ps_emailsubscription" pinchamos sobre "Borrar" y "OK" en la cuenta que queremos eliminar de nuestro newsletter, por ejemplo la que tiene ID 8 asignado por Prestashop en la imagen, igual de fácil que en el back office.
En la parte inferior de la imagen veréis el código que se utiliza desde la consola de comandos para realizar esa tarea. Ese código es para borrar un usuario. Ahora vamos a borrar varios a la vez.
Borrado automático. En la primera imagen de phpMyAdmin podéis ver como se entra desde la base de datos a la tabla "ps_emailsubscription" (parte izquierda). En la parte derecha, arriba tenemos varias pestañas, pinchamos en la que pone SQL para entrar a la consola de comandos y aquí pegamos el siguiente código: DELETE FROM `ps_emailsubscription` WHERE `id`>9 AND `id`<12
Lo que dice en ese código es que vamos a realizar un borrado de la tabla ps_emailsubscription, "donde" tomamos valores ID mayores que 9 "y" menores que 12, es decir, esto nos elimina de la suscripción de nuestra newsletter a los usuarios con ID10 e ID11 (el 9 y 12 se quedan). Cuidado con los signos > y < que si los ponemos al revés la liamos. Una vez pegado el código ponemos el intervalo de ID´s que queramos eliminar y pinchamos en "continuar".
Si volvemos a la tabla (de la pestaña "SQL" pasamos a la primera que pone "Examinar") podemos ver que los usuarios con ID 9 y 12 siguen ahí, pero los usuarios de ID 10 y 11 han desaparecido, y en la parte inferior el código que ha generado esa operación. De esta forma solo tenéis que sustituir los números en el código para un intervalo de direcciones que son spam, por ejemplo:
DELETE FROM `ps_emailsubscription` WHERE `id`>560 AND `id`<820
Un cordial saludo.😄