Portada PrestaShop Cómo Bloquear SPAM en PrestaShop 1.6 (El Código de Códigos)
Ya hemos realizado algún artículo comentando que si recibíamos SPAM desde los formularios de PrestaShop 1.7 lo mejor era poner un sistema de Captcha en PrestaShop 1.7 que pudiera identificar si quien escribía el email era una personal real o un robot e incluso también pusimos un artículo con otro método alternativo para PrestaShop 1.6 en caso de no querer poner un sistema de Captcha.
Hoy os presentamos otro método para bloquear SPAM en PrestaShop 1.6 sin necesidad de Captchas, y que además resulta mucho más sencillo. Lo haremos mediante lo que hemos bautizado como “El Código de Códigos”, ya que básicamente se trata de un código que tenemos que añadir a un archivo que tenemos que crear dentro de PrestaShop 1.6.
Y es que como sabéis los formularios de contacto de PrestaShop 1.6 que son poco seguros no paran de ser atacados por robots, así que vamos a ver la manera de bloquear los emails SPAM provenientes de los formularios.
Para ello hay que crear un archivo llamado "ContactController.php" con un código un “poco” extenso, dentro de la siguiente carpeta de PrestaShop: override/controllers/front, pero no te preocupes, ya que te explicamos todo a continuación.
Para este tutorial vamos a usar el panel de control cPanel y su correspondiente Administrador de Archivos, ya que pensamos es la forma más rápida, pero también se puede usar un cliente de FTP.
Recordemos que hay 3 formas de acceder a cPanel:
Una vez dentro de cPanel, en la primera sección “ARCHIVOS”, tenemos la opción del “Administrador de archivos”.
Allí, debemos buscar la ruta que comentábamos previamente de la instalación de PrestaShop: override/controllers/front, y crear un archivo con el nombre “ContactController.php”.
El archivo se puede crear fácilmente pulsado en “+Archivo (1)”, ubicado en la parte superior izquierda del Administrador de archivos de cPanel. Después, en nuevo nombre del archivo, tecleamos “ContactController.php (2)”. Y, por último, hacemos click en el botón “Create New File (3)”.
Creado el archivo toca meter “El Código de Códigos”. Para ello, hacemos click con el botón izquierdo del ratón para seleccionar el archivo. Después, hacemos lo mismo, pero con el botón derecho del ratón, ya que de esta forma se desplegará un menú con la opción “Edit”, sobre la cual tenemos que pinchar. Después, tendremos que pulsar de nuevo en "Edit".
El código a poner es el siguiente:
<?php class ContactController extends ContactControllerCore { public function postProcess() { if(Tools::isSubmit('submitMessage')) { $message = Tools::getValue('message'); $from = Tools::getValue('from'); $banned_in_email = [‘.ru’, ‘qq.com’, ‘.vn’]; $banned_content = [‘email marketing’]; foreach ($banned_in_email as $string) { if(strstr($from, $string)) $this->errors[] = Tools::displayError('Este Email NO está Permitido'); } foreach ($banned_content as $string) { if(strstr($message, $string)) $this->errors[] = Tools::displayError('Contenido Invalido'); } } parent::postProcess(); } }
<?php
class ContactController extends ContactControllerCore
{
public function postProcess()
if(Tools::isSubmit('submitMessage')) {
$message = Tools::getValue('message');
$from = Tools::getValue('from');
$banned_in_email = [‘.ru’, ‘qq.com’, ‘.vn’];
$banned_content = [‘email marketing’];
foreach ($banned_in_email as $string) {
if(strstr($from, $string))
$this->errors[] = Tools::displayError('Este Email NO está Permitido');
}
foreach ($banned_content as $string) {
if(strstr($message, $string))
$this->errors[] = Tools::displayError('Contenido Invalido');
parent::postProcess();
Si revisamos el código podemos ver lo siguiente:
Y esto es la clave, ya que en esa línea podemos definir qué clase de emails banear. Aunque debemos tener en cuenta que la terminación que pongamos allí debe estar relacionada con los correos SPAM que estamos recibiendo. Normalmente se suele recibir spam de los dominios: .ru, qq.com y .vn, por eso hemos puesto esos 3, pero si recibes de algún otro lo puedes añadir al listado también sin problemas.
También podemos banear algún email que incluya el texto el que queramos, por ejemplo “email marketing”. Si recibimos muchos emails que contienen en el texto esa palabra “email marketing” u otra es probable que ese mensaje sea SPAM, por lo que podemos añadir esa palabra para banearlo. No está nada mal ¿a qué no?
Antes de realizar una prueba de envío de spam, debemos asegurarnos de borrar el archivo “class_index.php”, dentro de la carpeta “cache” de Prestashop 1.6, para que el sistema cargue de nuevo override. Para ello podemos seleccionar el archivo con el botón derecho del ratón y después hacer lo mismo, pero haciendo click con el botón derecho para que se desplegué un menú con la opción “Delete” o incluso podemos darle a “Borrar” en la barra superior del Administrador de archivos.
Este “truco” para bloquear el SPAM que se envía desde los formularios de PrestaShop funciona con la versión 1.6 e inferiores, sin embargo, con PrestaShop 1.7 también lo hemos probado y NO funciona. 🙁
Hemos decidido hacer este artículo porque todavía tenemos muchos clientes utilizando la versión 1.6 de PrestaShop con formularios que reciben ataques a diario.
Email NO Permitido:
Email NO Permitido / Contenido Invalido
¡Síguenos en nuestras redes sociales: Facebook y Twitter @hostinet!