Skip to content

Минимальное количество символов в сообщении

Здравствуйте. Перечитал все подобные темы, никак не могу настроить минимальное количество символов для отправки сообщения (и новых тем), для борьбы с мелким спамом.

 

Метод отсюда - http://ipbskins.ru/forum/blog/69/entry-180-минимальная-длина-сообщений-в-ipboard-3х/ почему-то не работает вообще на версии 3.4.9.

 

Также есть хук (FC33) Minimum Character Limit, но он работает тоже как-то странно, то ограничивает отправку коротких сообщений, то нет. Точно не ограничивает, если отправить несколько сообщений подряд...

 

P.S. - где-то уже вроде отписывались по проблемам с этим хукам, но к сожалению не смог найти эту тему.

 

Не подскажите, пожалуйста, в чем там проблема? Хук прикрепляю. Заранее огромное спасибо

(FC33) Minimum Character Limit.xml

Featured Replies

Метод отсюда - http://ipbskins.ru/f...й-в-ipboard-3х/ почему-то не работает вообще на версии 3.4.9.

В 3.1 редактор другой.

В 3.4 пост идет с тегами. Если Вы отправляете символ a (англ.), то пост будет

<p>a</p>

. А значение выражения (strlen( trim( IPSText::removeControlCharacters( IPSText::br2nl( $post['post'] ) ) ) )) будет равна 8. Если Вы отправите а (русс), то значение будет 9.

Используйте mb_strlen() или IPSText::mbstrlen(). Для удаления тегов - strip_tags() или IPSText::stripTags()

  • Author

Странно, если поменять оригинальную строку

 

if ( strlen( trim( IPSText::removeControlCharacters( IPSText::br2nl( $post['post'] ) ) ) ) < 1 AND !$this->getIsPreview() )

На

 

if ( mb_strlen( trim( IPSText::removeControlCharacters( IPSText::br2nl( $post['post'] ) ) ) ) < 10 AND !$this->getIsPreview() )

То вообще нет изменений. А если поменять на то:

 

if ( strip_tags( trim( IPSText::removeControlCharacters( IPSText::br2nl( $post['post'] ) ) ) ) < 10 AND !$this->getIsPreview() )

То сообщение вообще не отправляется с любым кол-вом символов...

В первом случае Вы получаете значение (кол-во) вместе с тегами.

Во втором - строку, из которой удалены теги.

 

Нужно совместить.

  • Author

@newbie, огромное спасибо за подсказку!

 

Для 3.4.x

 

admin\applications\forums\sources\classes\post\classPost.php

 

Найти (3 раза):

 

strlen( trim( IPSText::removeControlCharacters( IPSText::br2nl( $post['post'] ) ) ) ) < 1

Заменить на:

 

mb_strlen( strip_tags ( trim( IPSText::removeControlCharacters( IPSText::br2nl( $post['post'] ) ) ) ) ) < 10

< 10 - минимальная длина сообщений в символах.

Edited by Strategius

Есть в этом один интересный нюанс - если вставить смайлик, то ограничение на кол-во символов оно не влияет. Поставь хоть ограничение в сто символов, смайлик проходит без проблем.

Есть в этом один интересный нюанс - если вставить смайлик, то ограничение на кол-во символов оно не влияет. Поставь хоть ограничение в сто символов, смайлик проходит без проблем

Как так?

У Вас 3.1.4. Проверил. Смайлы не проходят.

Смайл - тег img. А мы теги вырезаем strip_tags.

  • Author
Смайлы не проходят

В 3.4 проходят как ни странно...

У Вас 3.1.4. Проверил. Смайлы не проходят.

Смайл - тег img. А мы теги вырезаем strip_tags.

Хм... Может это ещё зависит от каких либо настроек?

 

Все остальные символы, и бб-коды и html-код - не проходит.

Сделайте var_dump( mb_strlen( strip_tags ( trim( IPSText::removeControlCharacters( IPSText::br2nl( $post['post'] ) ) ) ) ) ); exit;

и посмотрите что содержит очищенная строка.

var_dump( mb_strlen( strip_tags ( trim( IPSText::removeControlCharacters( IPSText::br2nl( $post['post'] ) ) ) ) ) ); exit;

Это поставить вместо чего?

Это поставить вместо чего?

Перед условием.

Перед условием.

Выдаёт int(число символов напечатанных в форму)

 

А вот если смайл вписать, то выдаёт - int(0)

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.