Если у вас разрешен визуальный редактор сообщений и нет ограничений на максимальный размер текста сообщений, то рано или поздно вы можете столкнуться с ситуацией, когда в текст сообщения попадают картинки в бинарном виде. Выглядит это примерно вот так:
[IMG]...data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/4SmVRXhpZgA...[/IMG]
"Прикол" в том, что увидеть такое безобразие можно только в простом режиме редактора.
А не прикол в том, что обычно такой кусок очень большой, весь этот мусор загружается из базы данных форума и скачивается пользователем при каждом просмотре странички, на которой есть "зараженное" сообщение.
Мобильные пользователи особенно радуются этому
Найти все "зараженные" сообщения очень легко с помощью sql-запроса к базе данных (добавьте префикс к названию post, если используете префиксы):
Code:
SELECT * FROM `post` where pagetext like '%data:image%'
Затем для каждого найденного postid открываем нужное сообщение и вручную убиваем в нем заразу. Пример ссылки для открытия сообщения по <postid>:
Code:
http://ваш-сайт/forum/showpost.php?p=<postid>
Если таких сообщений очень много, то можете задуматься об автоматизации процесса
Далее о том, как предотвратить дальнейшее появление заразы.
1) Создать фразу с сообщением пользователю.
Админка -> Языки и Фразы -> Управление фразами -> Добавить новую фразу
Тип фраз: Error messages (только этот)
Продукт: vbulletin
Имя переменной: hasdataimage
Примерный текст: Вы вставили в сообщение большой бинарный объект как текст. Переключите редактор в простой режим, чтобы увидеть бинарный объект в тексте.
Можно также добавить в текст изображение кнопки переключения режима редактора, примерно вот так: <img src="/forum/images/editor/switchmode.gif">
2) Отредактировать файл forum/includes/class_dm_threadpost.php
Найти функцию verify_pagetext, в ней фрагмент кода в конце:
PHP Code:
}
return parent::verify_pagetext($pagetext);
Вставить
до найденного фрагмента следующий код:
PHP Code:
if (false !== stripos($pagetext, "data:image"))
{
$this->error('hasdataimage');
return false;
}
Теперь при попытке сохранения сообщения с бинарным объектом пользователь получит сообщение об ошибке.
P.S. Не знаю, попадают ли через штатный редактор четверки такие штуки в текст сообщений, но если попадают, то диагностика, лечение и предотвращение полностью такое же, как и описано выше для тройки.