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