Добрый день!
Подскажите пожалуйста как правильно хранить текст и его форматирование в БД? Например, как хранятся комментарии на Тостере в БД, как идет сохранение и последующая (обратная) развертка?
Хочу сделать что-то типа онлайн-редактора текста с форматированием и с возможностью сохранения форматированного документа в БД. Только начал изучать вопрос, подскажите в какую сторону копать?
В бд все хранится в открытом виде с тегами, обработка идет на момент "развертки". Запрещенные теги экранируются, разрешенные остаются и обрабатываются на клиенте как полагается.
Спасибо за наводку! Я правильно понимаю, что BBCode стандартизирован, т.е. свои теги в него добавить не получится? Вот я, например, хочу написать свое отображение программного кода в тегах - через BBCode у меня это сделать не получится?
Получится. Обрабатываешь тег CODE на сервере как разрешенный. А уже на клиенте с помощью js/css делаешь красиво. Через js парсишь все что внутри тега CODE, добавляешь подсветку кода и т.д т.д т.д.
Собственно основная работа делается на клиенте. На сервере лишь разрешаем тег, что бы не пришлось парсить всю страницу целиком через js.
Christian Lisov: Да, спасибо, более менее разобрался) Поправьте, если ошибаюсь в видении ситуации:
1) На странице клиента создается контейнер (textarea, div, span), в котором реализуется редактирование/форматирование текста;
2) В кэше (localStorage) хранится текст в тегами BBCode, а в контейнере отображается уже отформатированный текст;
3) При отправке текста c BBCode на сервере вызывается функция проверки на допустимость тегов (лишние удаляются или экранируются).
4) Записываем все в БД;
5) При запросе отправляем текст из БД на клиент, где через js сохраняем текст в localStorage и формируем представление текста в контейнере.
Меня вот интересует как производится проверка текста на стороне сервера. Ну и есть ли аналоги BBCode и не устарел ли он.
3) При отправке текста c BBCode на сервере вызывается функция проверки на допустимость тегов (лишние удаляются или экранируются).
При отправке на сервер экранируются ковычки, т.е символы способные как то повлиять на sql запрос допустив инъекцию и т.д. Экранирование спецсимволов html происходит в промежутке выборки из БД до отправки на клиент. Не могу сказать точно как это работает на шарпе, в например php за это отвечает функция htmlspecialchars