Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Опубликовано:

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

 

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

 

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

 

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

 

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

(FC33) Minimum Character Limit.xml

Рекомендованные сообщения

Опубликовано:

Метод отсюда - 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()

Опубликовано:
  • Автор

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

 

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() )

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

Опубликовано:

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

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

 

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

Опубликовано:
  • Автор

@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 - минимальная длина сообщений в символах.

Изменено пользователем Strategius

Опубликовано:

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

Опубликовано:

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

Как так?

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

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

Опубликовано:
  • Автор
Смайлы не проходят

В 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)

Создайте аккаунт или войдите в него для комментирования

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

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.