Помощь Спам из формы обратной связи

У меня спама нет, хотя присылали по 200 в день. Работает самописный хитрый скрипт. И адрес страницы не менял, и ip не банил.
Козлёнок всю почту завалил с 5 сайтов :mad:
Это еще не самое плохое. Скоро твои email-ы банить начнут за рассылку спама, так как письма о том, что сообщение принято рассылаются по базе валидных адресов с твоего email с содержанием спама.
 
как эту форму отключить совсем ?
.. не помню что бы клиенты ею пользовались .... только спам валится
Отключить форму можно через модуль Для просмотра ссылки Войди или Зарегистрируйся там снимаете галочку с "Отображать ссылку "Связаться с нами" в футере", ну и меняете URL формы обратной связи.
 
На другом форуме нашёл такое решение: Изменить файл /controllers/front/ContactController.php
//'{message}' => Tools::nl2br(stripslashes($message)),
'{message}' => Tools::nl2br(strip_tags($message)),

и

/*if (empty($contact->email)) {
Mail::Send($this->context->language->id, 'contact_form',
((isset($ct) && Validate::isLoadedObject($ct)) ? sprintf(Mail::l('Your message has been correctly sent #ct%1$s #tc%2$s'),
$ct->id, $ct->token) : Mail::l('Your message has been correctly sent')), $var_list, $from, null, null, null, $file_attachment);
} else {*/

/* if (!Mail::Send($this->context->language->id, 'contact', Mail::l('Message from contact form').' [no_sync]',
$var_list, $contact->email, $contact->name, null, null,
$file_attachment, null, _PS_MAIL_DIR_, false, null, null, $from) ||
!Mail::Send($this->context->language->id, 'contact_form',
((isset($ct) && Validate::isLoadedObject($ct)) ? sprintf(Mail::l('Your message has been correctly sent #ct%1$s #tc%2$s'),
$ct->id, $ct->token) : Mail::l('Your message has been correctly sent')), $var_list, $from, null, null, null,
$file_attachment, null, _PS_MAIL_DIR_, false, null, null, $contact->email)) {*/
if (!Mail::Send($this->context->language->id, 'contact', Mail::l('Message from contact form').' [no_sync]',
$var_list, $contact->email, $contact->name, null, null,
$file_attachment, null, _PS_MAIL_DIR_, false, null, null, $from) )
{
$this->errors[] = Tools::displayError('An error occurred while sending the message.');
}
// }

Это отключает обратное письмо и удаляет ссылки из текста.
 
переименование страницы контактов уже не помогает, привет автору этого безобразия, который наверняка это читает :D

На другом форуме нашёл такое решение: Изменить файл /controllers/front/ContactController.php
Это отключает обратное письмо и удаляет ссылки из текста.
немного странно - сначала комментируется кусок кода, а потом он же вставляется ниже.
я сделал немного проще:
h_1520072573_3474750_e5bbeb48f6.jpeg
 
Последнее редактирование:
Здравствуйте, на одном сайте прочитал:
В шаблоне contact-form.tpl поменяйте поля формы email, message, submitMessage.
Замените название этих элементов. Клик на submitMessage через javascript. 90% спам-ботов отсеются.
Кто разбирается, объясните, что конкретно надо поменять? Вот например кусок кода:
{/if}
<p class="form-group">
<label for="email">{l s='Email address'}</label>
{if isset($customerThread.email)}
<input class="form-control grey" type="text" id="email" name="from" value="{$customerThread.email|escape:'html':'UTF-8'}" readonly="readonly" />
{else}
<input class="form-control grey validate" type="text" id="email" name="from" data-validate="isEmail" value="{$email|escape:'html':'UTF-8'}" />
{/if}
</p>
Которые из этих элементов являются полями форм?
 
переименование страницы контактов уже не помогает, привет автору этого безобразия, который наверняка это читает :D


немного странно - сначала комментируется кусок кода, а потом он же вставляется ниже.
я сделал немного проще:
h_1520072573_3474750_e5bbeb48f6.jpeg
Да, действительно....надо попробывать на работоспособность. Вы не испытывали это решение? Тот код я испытал, письма не отправляет по e-mail, введённому в форму обратной связи, только администратору.
 
переименование страницы контактов уже не помогает, привет автору этого безобразия, который наверняка это читает :D
Не удивлюсь, если он еще и идеи подкидывает, как с этим безобразием бороться )
 
Да, действительно....надо попробывать на работоспособность. Вы не испытывали это решение? Тот код я испытал, письма не отправляет по e-mail, введённому в форму обратной связи, только администратору.
как бы теперь ещё и администратору чтобы не отправлял сделать.

надоел мне этот спамер, похоже придётся просто на уровне сервера заблокировать ContactController.php - я так понимаю, что спамер просто напрямую научился обращаться к методам отправки, не заморачиваясь с заполнением формы на странице контактов.
@_sashok , можете подтвердить теорию ? в принципе на уровне nginx я могу подменить запрос, если понимать, как именно он вызывается.
 
да
любые манипуляции с каптчами не помогают

по-свободе попробую с шаманством обработчика в файле
/override/controllers/front/ContactController.php

у меня сейчас там так, просто юзерам ничего не отправляю, но на админа много приходит периодически, я баню IP адреса, с которых шлёт:

Код:
<?php

class ContactController extends ContactControllerCore
{

public function postProcess()
    {
        if (Tools::isSubmit('submitMessage')) {
...
//$extension = array('.txt', '.rtf', '.doc', '.docx', '.pdf', '.zip', '.png', '.jpeg', '.gif', '.jpg');
$extension = array('.txt', '.rtf', '.doc', '.docx', '.pdf', '.zip', '.png', '.jpeg', '.gif', '.jpg','.xls','.xlsx');
 

..........
..........
..........

                        if ($id_product) {
                            $product = new Product((int)$id_product);
                            if (Validate::isLoadedObject($product) && isset($product->name[Context::getContext()->language->id])) {
                                $var_list['{product_name}'] = $product->name[Context::getContext()->language->id];
                            }
                        }
                        if (empty($contact->email)) {
//Mail::Send($this->context->language->id, 'contact_form', ((isset($ct) && Validate::isLoadedObject($ct)) ? sprintf(Mail::l('Your message has been correctly sent #ct%1$s #tc%2$s'), $ct->id, $ct->token) : Mail::l('Your message has been correctly sent')), $var_list, $from, null, null, null, $file_attachment);
                        } else {
                            if (!Mail::Send($this->context->language->id, 'contact', Mail::l('Message from contact form').' [no_sync]',
                                $var_list, $contact->email, $contact->name, null, null,
                                        $file_attachment, null,    _PS_MAIL_DIR_, false, null, null, $from)/* ||
!Mail::Send($this->context->language->id, 'contact_form', ((isset($ct) && Validate::isLoadedObject($ct)) ? sprintf(Mail::l('Your message has been correctly sent #ct%1$s #tc%2$s'), $ct->id, $ct->token) : Mail::l('Your message has been correctly sent')), $var_list, $from, null, null, null, $file_attachment, null, _PS_MAIL_DIR_, false, null, null, $contact->email)*/) {
                                $this->errors[] = Tools::displayError('An error occurred while sending the message.');
                            }
                        }
                    }
                }
                if (count($this->errors) > 1) {
                    array_unique($this->errors);
                } elseif (!count($this->errors)) {
                    $this->context->smarty->assign('confirmation', 1);
                }
            }
        }
    }
}
 
Назад
Сверху