Показать сообщение отдельно
  #8 (permalink)  
Старый 09.06.2016, 13:10
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Вы разрешаете клиентам помещать в сообщения html-код - изображения. А для того чтобы смайлы работали они в сообщениях должны быть как есть. Это означает, что нельзя пропустить сообщение через htmlspecialchars перед выводом клиенту, что делается обязательно, чтобы не допустить на странице XSS атак. А значит любой ушлый может поместить в него куда белее вредное, нежели картинку.

Вам придется разбирать посредством рег. выражений каждый пост, отсеивая разрешенное и запрещенное. То есть ваш подход, это не лучшее, что можно сделать. Визуальные редакторы тоже используют подобное решение, но только серверу отправляется textarea, которая на время работы редактора "в тени", а данные которые в нее пишет визуальный редактор обрабатываются.

В простейшем случае таким же образом можно писать в textarea (в фоновом режиме) не html-теги, а ВВ-теги. Можно вообще без тегов обойтись, а писать , :0), ... А в div (панели сообщения) естественно будет смайл. В этом случае форма отправляет текст, который без проблемы можно обработать htmlspecialchars, и заменить ВВ-теги или мнемоники на смайлы.

При этом при отключенном JS форма будет работать обычным способом, ваша же не сможет отправить сообщения.

Последний раз редактировалось laimas, 09.06.2016 в 13:12.
Ответить с цитированием