Yossarian

Yossarian

+47
Репутация
6335
Рейтинг
#1 Конструктор форм - запрет СПАМА, не работает 28 марта 2018 в 09:11
Привет всем!
Сегодня у меня очень радостная новость, потому как я смог решить задачу описанную в данной теме.
Опишу свое решение с комментариями.
Первое на, что я обратил внимание, так это на то что робот обходит мои ловушки и я понял, что он обращается на прямую в базу данных и туда заливает свою информацию. Т.е. бот получает из базы данных список полей Формы, заполняет их, и отправляет назад.
Вторым моим рассуждением стал анализ задач бота, главная задача бота, это публикация ГОВНО-ссылки на свой ресурс. Далее я подумал ЛЮБАЯ ссылка имеет вид: имя сайта, имя сайта и т.д.
Подсказку я нашел в интернете в темах про регулярные выражения.
Итак я вставил в файл /components/forms/frontend.php следующее выражение (у меня это строки 107-110)
  1. } else {
  2. [code=php]$mail_message .= '<h3>'.$field['title'] . ':</h3>' . $fields[$field['id']];[/code]
  3. }
  4. // НАЧАЛО мой код запрещающий ЛЮБЫЕ ссылки
  5. if (preg_match("/http:\/\/|https:\/\/|ftp:|www|.com|.net|.ru/", ($fields[$field['id']]))) {
  6. cmsCore::addSessionMessage($_LANG['FORM_HTTP01'], 'error');
  7. $inCore->redirectBack();
  8. }
  9. // КОНЕЦ мой код запрещающий ЛЮБЫЕ ссылки
  10.  
Как видно из кода, я сначала позволяю боту заполнить все поля:

  1. $mail_message .= '<h3>'.$field['title'] . ':</h3>' . $fields[$field['id']];
А затем я проверяю ВСЕ поля формы на соответствие условиям. Прелесть данного способа в том, что фразы могут быть любыми и в любом количестве.
Не все кто использует наш любимый Инстант есть программистами, и я в том числе не программист.
Поэтому мои комментарии по коду:
if — логическое условие если
preg_match — поиск совпадений;
"/ — это начало перечисления символов;
/" — конец перечисления;
| — через прямые разделители перечисляем те символы, которые хотим запретить (я запретил: , , ftp:, www, .com, .net, .ru).
Обратной слешью экранируем те символы, которые используются в качестве служебных при построении регулярных выражений, в частности прямые слеши. (ПРИМЕР выражение , два косых слеша экранируем обратным слешом и получаем вместо них \/ \/).
$fields[$field['id']] — переменная которую я проверяю

Ну вот пожалуй и все. Тему пока прошу не закрывать, т.к. я хочу внедрить данный метод в форум. Решение опишу здесь же.

Всем удачи!!!
#2 Конструктор форм - запрет СПАМА, не работает 27 марта 2018 в 11:30


Я готов прикрутить капчу от Google, вопрос как это сделать.

Yossarian

На первую ветку, все многие эту ставили:
instantcms.ru/blogs/blog-razrabotchika/simpla-captcha-perezagruzka.html

Rainbow

Почитал, но как то не впечатляет. Вопрос не деньгах.
Я хочу что-бы Спамеры боролись не с моим сайтом а с Гуглем.
Поэтому желательно ReCaptcha, пока читаю документацию.
#3 Конструктор форм - запрет СПАМА, не работает 27 марта 2018 в 09:46
Всем привет!
Большое спасибо все за участие в решение проблемы.
Я готов прикрутить капчу от Google, вопрос как это сделать. Нужно знать процедура, у гугля просто написано.
Зарегистрируй сайт, получи код, затем вставь скрипт и код, я так и сделал но работает пока стандартная капча.
Как подключить Google, я не понимаю.
#4 Конструктор форм - запрет СПАМА, не работает 26 марта 2018 в 08:27


Yossarian, попробуйте другое решение, создайте в форме выпадающий список обязательный к заполнению, НО первое значение должно быть не заполненным.
Примерно так:


То есть, только выбранное заполненное значение, будет являться, выполненным.

Пару раз получал с неё спам, после этого создавал новое подобное поле и все...

У меня так давно сделано. Но может быть я не интересен спамерам))

Rainbow

Добрый день!

К сожалению Ваше решение не помогло, сегодня пришло два СПАМ сообщения с разных форм.
Может кто-то другой поможет. А пока наверное нужно будет отключить все формы.
#5 Конструктор форм - запрет СПАМА, не работает 25 марта 2018 в 20:55
Добрый день!
Спасибо, пока сделал как вы посоветовали, пересоздал поле Разделы и вставил список с пустым первым пунктом.
Сижу жду, завтра станет ясно прошел бот защиту или нет.

Но мне все равно не понятно, почему созданная защита с длинной поля НЕ РАБОТАЕТ?
Почему моя доработка в файле /components/forms/frontend.php не работает?

  1. if ($do=='processform'){
  2.  
  3. $errors = false;
  4.  
  5. $fields = $inCore->request('field', 'array_str');
  6. if(!$fields) { cmsCore::addSessionMessage($_LANG['FORM_ERROR'], 'error'); $inCore->redirectBack(); }
  7.  
  8. //Проверка формы Бланк заказа - начало
  9. if ((strlen($field['id']=141)>3))
  10. {
  11. cmsCore::addSessionMessage($_LANG['FORM_NUMBERS'], 'error');
  12. $inCore->redirectBack();
  13. }
и самое главное, когда я прописываю проверку символов для field_id=131 (это поле для Дополнительной информации, сюда бот и вставляет ссылку), она тоже не работает:
  1. if (!preg_match("/^([а-яА-Я])+$/i", ($field['id']=131)))
  2.  
  3. {
  4. cmsCore::addSessionMessage($_LANG['FORM_HTTP01'], 'error');
  5. $inCore->redirectBack();
  6. }
Как заставить проверят конкретные поля по условиям?
#1 Конструктор форм - запрет СПАМА, не работает 25 марта 2018 в 11:02
Добрый день!
Описываю проблему.
Сайт по продаже насосов, версия 1.9, со своим дизайном.
На моем сайте созданы несколько Форм (Бланк заказа, Заявка, подбор насосов по параметрам и т.д.).
Через форму Бланк заказа стал приходить СПАМ, примерное содержание:
ФОРМА: Бланк заказа
----------------------------------------------
Раздел: Насосы

Наименование оборудования: Kz_AkTaU_ Kz_AlIeV_Kz

Количество: Евгения Зубенко

Дополнительная информация:
Раиса Родакова \r\nоткрой
\r\ЗДЕСЬ ССЫЛКА КУДА-ТО ТАМ...

Контактное лицо: Андрей *

Организация, должность: Константин Рачков

Телефон: 89910000682

Первое, что я решил сделать это уменьшить длину поля Количество, и сейчас она составляет 3 символа. Это решение не помогло, письма приходят и как видно в поле количество: Евгения Зубенко.
Затем я через базу данных определил ID поля и прописал условие в файле /components/forms/frontend.php
//Проверка формы Бланк заказа — начало
if ((strlen($field['id']=141)>3)) // проверяет чтобы длина текста в поле была не более 3 символов
{
cmsCore::addSessionMessage($_LANG['FORM_NUMBERS'], 'error');
$inCore->redirectBack();
}
//Проверка формы Бланк заказа — конец
Сам проверил решение, оно работает если я это делаю как человек на сайте, но БОТ свободно обходит данную проверку.
Вот лог движения БОТа:
131.153.40.190 — - [25/Mar/2018:02:21:43 +0200] "GET / HTTP/1.0" 200 38562 "мой сайт/"
131.153.40.190 — - [25/Mar/2018:02:21:44 +0200] "GET /kontaktnaja-informacija
131.153.40.190 — - [25/Mar/2018:02:21:44 +0200] "GET /blank-zakaza.html
131.153.40.190 — - [25/Mar/2018:02:21:45 +0200] "GET /includes/codegen/cms_codegen.php
131.153.40.190 — - [25/Mar/2018:02:21:46 +0200] "POST /forms/process
131.153.40.190 — - [25/Mar/2018:02:21:50 +0200] "GET /blank-zakaza.html

Прошу помощи, если кто знает как заставить проверят поля по условиям (длина поля, только цифры и т.д)
#7 Настройка поиска в каталоге 21 февраля 2016 в 23:28
Спасибо за достаточно быстрый ответ.
Но когда я вношу данные изменения. то полностью меняется структура отображения. сначала видны самые большие цена товара по убыванию в низ.
Ваша правка позволяет отсортировать по цене, но не в ту сторону, и это может отпугнуть потенциальных покупателей.
Я хотел логическое условие ЕСЛИ, сам пытался его внедрить:
  1. if ($price>0.01)
  2. {
  3. $_SESSION['uc_orderby']='price';
  4. $_SESSION['uc_orderto']='asc';
  5. }
  6. else
  7. {
  8. $_SESSION['uc_orderby']='desc';
  9. $_SESSION['uc_orderto']='asc';
  10. }
Но система выдает белый экран, значит ошибся в синтаксисе, сижу разбираюсь.
#1 Настройка поиска в каталоге 21 февраля 2016 в 00:55
На моем сайте, у каждой записи универсального каталога добавлена функция find, которая позволяет посетителю увидеть какие еще есть товары аналоги (пример поиска значения 36218: nasosu.com.ua/catalog/1028/find/36218 ). При этом система подбирает 5 позиций, по умолчанию сортировка по алфавиту. Из которых 3 товара с ценой. а два без цены.
Подскажите кто знает, как сделать сортировку по цене по умолчанию, при этом цены равные нулю, переместить в конец сортировки?
#1 Доработка магазина 9 января 2015 в 01:46
Добрый день!
Необходимо выполнить доработку универсального каталог с включенной функцией магазина (версия 1.9)
Необходимо, чтобы при добавлении товара в корзину, системы автоматически устанавливала минимальное количество товара. Которое вычисляется по формуле или взять из параметров которые уже есть в таблице. (страница товара: test1.nasosu.com.ua/catalog/item377.html)
При этом пользователь должен иметь возможность заказать больше чем минимальное количество. При вводе меньшего значения, уведомлять пользователя о минимальном количестве.
Данная доработка нужна только для одной категории универсального каталога ID=1028.
Я примерно понимаю объем работы, добавление параметра в таблице и дописывания логики в /components/price/frontend.php
На сайте отдельно куплен компонент InstantShop, однако для одной категории товара нужно именно использовать Универсальный каталог, это связано с вопросами СЕО.
Адрес основного сайта: www.nasosu.com.ua
Адрес тестового сайта: www.test1.nasosu.com.ua

Жду кто поможет и скажет сколько денег.
#10 Активация пользователей 30 ноября 2014 в 17:13
Отличное решение, спасибо!!!
А то так достали роботы за 2 дня 2000 постов на форуме со всяким г..., а тут наткнулся на ваше решение и понял вот оно!!!
#11 Доработка Доски объявлений 6 декабря 2010 в 20:55
Добрый день!
К сожалению не получил, от Вас ответа на свое последнее письмо.
Может быть Вы возьметесь за доработку?

С уважением,
Владимир


Может Вам посмотреть в сторону онлайн магазинов..
Или смотрите тут Профессиональный магазин для InstantCMS
=====================
1. А самому неужели там ручками сделать — насколько я помню вроде бы все делается.
2. В 1.7 есть такая возможность. (проверено)
3. Такого нет — но за отдельную плату организуют.
4. вроде бы есть.
5. нет возможности.

Hmelex
#12 Доработка Доски объявлений 3 декабря 2010 в 18:54
Спасибо за ответ!
Мне нравится Инстант и по структуре и по логике, я не один сайт уже на нем сделал.
Модуль инстант магазина у меня куплен, он будет решать задачу продажи запчастей.
А вот доска объявлений полноценная отсутствует вот ее то мне и не хватает.
Если Вы возьметесь за доработку то поговорим более плотно.
Генеральные задачи сайта:
1. Доска объявлений
2. Фотогалерея
3. Блоги
4. Форум
5. Новости
6. Каталог
7. Статьи
#1 Доработка Доски объявлений 3 декабря 2010 в 15:52
Кто платно доработает доску объявлений.
1. Возможность создания дополнительных параметров для различных рубрик объявлений (пример: Продажа компьютеров — список параметров компьютера, продажа принтеров — список параметров принтера)
2. Возможность публикации объявлений зарегистрированными и не зарегистрированными пользователями.
3. Автоматическое создание/удаление ВИП объявлений с оплатой через СМС или WebMoney. Размещение ВИП объявлений по заданным параметрам
4. Поиск по доске объявлений для каждого раздела свои параметры.
5. Возможность редактирования имени страницы объявления.

Есть подробное ТЗ, направлю исполнителю на почту.
#14 7 февраля 2010 в 13:22


Привет!
При регистрации и активации кошельков и всего прочего — выдают код, который по принципу информера (см. информеры), вставляешь в необходимое тебе место, отдельно или в теле страницы...

Madmax
Добрый день! Не могли подсказать как реализовать следующую задачу.
Создан раздел "Статей" куда администратор наполняет получаемые сайтом заявки на оборудование (насосы, запчасти и т.д.). Данный раздел доступен двум группам Администраторам и Money, как сделать, чтобы пользователь смог смотреть данный раздел только после оплаты через WM, а также что-бы через 7 дней доступ был опять закрыт и все это работало автоматически или полуавтоматически.
Скажите мне понятно ли я описал задачу?
#15 7 февраля 2010 в 12:18
1. В разделе Универсальный каталог. При копировании подкатегорий в любой из категорий, при наполнении подкатегорий данными, ведется не правильный подсчет общего количества записей в каждой из созданных подкатегорий.
Пример:
Категорий: Головные уборы
Подкатегории: Повседневные (10)
Рабочие (5)
Женские (4)
Мужские (3)
Сначала создана подкатегория Повседневные, и на базе ее созданы остальные, Рабочие, Женские, Мужские
При отображении будет следующее:
Подкатегории: Повседневные (22)
Рабочие (22)
Женские (22)
Мужские (22)
2. В разделе Универсальный каталог. При копировании записей каталога, система стирает фотографию у источника копирования.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.