0 Пользователей и 1 Гость просматривают эту тему.
  • 7 Ответов
  • 1777 Просмотров
*

fiksius

  • Захожу иногда
  • 65
  • 1 / 0
Фильтр плохих слов
« : 11.04.2019, 11:14:31 »
Здравствуйте. Возникла такая проблема на сайте. В форму постоянно пишет какой-то товарищ настойчиво маты, одни и те же, каждый день по 5-6 и больше раз. Не надоедает человеку попросту.
Нужен фильтр слов. На оф форуме нарыт вот такой код

Код
function checkstring($string,$banned_words) {
    foreach($banned_words as $banned_word) {
        if(stristr($string,$banned_word)){
            return false;
        }
    }
    return true;
}
 
$string = preg_replace('/\s+/','', $_POST['form']['field_name']);
$banned_words = array('whatever','bad','word','you','want','goes','here');
 
if (!checkstring($string,$banned_words))
  $invalid[] = RSFormProHelper::getComponentId("field_name");

но он не работает. вместо того что вызвать инвалид инпут. форма все равно сабмитится и после обновления страницы ломается весь сайт.
а ломается, потому что в поле head вообще нет ничего. оно пустое.
плюс проблема код написан под англ слова, а нужно русские.
сталкивался ли кто-то с таким решением? может удалось решить? поделитесь пожалуйста очень надо
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Фильтр плохих слов
« Ответ #1 : 11.04.2019, 11:28:13 »
Попробуйте mb_stristr() вместо stristr(). На счет поведения RS Form ничего не могу сказать, потому что не использую.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

draff

  • Гуру
  • 5803
  • 434 / 7
  • ищу работу
Re: Фильтр плохих слов
« Ответ #2 : 11.04.2019, 12:27:47 »
Так форма и будет отправляться. PHP будет на сервере проверять. А имя поля нужно смотреть уже в инспекторе кода. Попробуйте по аналогии с JComments
*

fiksius

  • Захожу иногда
  • 65
  • 1 / 0
Re: Фильтр плохих слов
« Ответ #3 : 11.04.2019, 17:10:05 »
Попробуйте mb_stristr() вместо stristr(). На счет поведения RSForm ничего не могу сказать, потому что не использую.

это я так понимаю относится к понимаю русских слов в массиве?

Так форма и будет отправляться. PHP будет на сервере проверять. А имя поля нужно смотреть уже в инспекторе кода. Попробуйте по аналогии с JComments

проблема не в имени поля
имя поля я знаю
сам код вставляется в область рс форм, которая отрабатывает ДО отправки формы.
т.е. при нажатии отправить должно срабатывать поле инвалид, типа неверный ввод
если были введены перечисленные слова
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
Re: Фильтр плохих слов
« Ответ #4 : 11.04.2019, 21:49:04 »
сам код вставляется в область рс форм, которая отрабатывает ДО отправки формы.
т.е. при нажатии отправить должно срабатывать поле инвалид, типа неверный ввод
если были введены перечисленные слова
то, о чем вы говорите, происходит после отправки таки, но в случае обнаружения ошибки - возврат к форме с выводом ошибок. Если надо действительно ДО отправки проверить, то только с помощью JS (что не годится для защиты от спамеров) или аяксовая валидация - это немного надежней.

Но лучше всего проверять после отправки и если валидация не пройдена - отбрасывать такую отправку. Можно даже с выводом сообщения об успешной отправки - пусть спамер успокоится.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

lenbeton

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Re: Фильтр плохих слов
« Ответ #5 : 13.12.2019, 13:17:26 »
И все таки, есть какое то решение по словам? Заранее благодарен.
*

SeBun

  • BanMaster
  • 4018
  • 259 / 5
  • @SeBun48
Re: Фильтр плохих слов
« Ответ #6 : 13.12.2019, 16:03:42 »
Нужен плагин под RSForm? Могу написать, готового не знаю...
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

fiksius

  • Захожу иногда
  • 65
  • 1 / 0
Re: Фильтр плохих слов
« Ответ #7 : 03.03.2023, 11:30:20 »
И все таки, есть какое то решение по словам? Заранее благодарен.
да есть
надо поместить файл в сам компонент
components/com_rsform/helpers/customvalidation.php

в файл добавляете код. увы структура кода нарушена вставкой кода форума, поэтому надо форматировать редактором уже, но не добавляю в виде файла, чтобы потом на будущее вложение не отвалилось. для тех кто ищет решение. не забываем открыть php в файле  ;)
Код

 
defined( '_JEXEC' ) or die( 'Restricted access' );
 
require_once dirname(__FILE__).'/validation.php';
 
class RSFormProCustomValidations extends RSFormProValidations

 
  public static function validationTest($value, $extra = null, $data = 'name')
  {

$banned_words = array('слово','слово');
foreach($banned_words as $item)
{
if (stristr(mb_strtolower($value),$item)) {
  return false;
}
}
return true;
  }
 
  public static function validationTestPhone($value, $extra = null, $data = 'phone')
  {

$banned_words = array('слово','слово');
foreach($banned_words as $item)
{
if (stristr(mb_strtolower($value),$item)) {
  return false;
}
}
return true;
  }
 



потом заходите в форму и в вариантах валидации будут выпадать названия, которые написаны выше в коде
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Фильтр в Просмотре предоставленных файлов RSForm Pro

Автор _Ed

Ответов: 2
Просмотров: 1248
Последний ответ 29.10.2015, 14:26:59
от kodblack