Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как хранить HTML в mysql?
 
 автор: Sergeous   (27.08.2012 в 20:05)   письмо автору
 
 

На сайте будет возможность добавлять контент пользователями. Пользователи должны иметь возможность использовать в тексте обычные html теги (выделение жирным, тыблицы, вставка видео и т. д.).

Как лучше все это хранить в Mysql? Какими функция обрабытывать при добавлении и при выводе? И как решить проблему, когда какой-нибудь пользователь не закроет определенный тег и это испортит оформление страницы?

  Ответить  
 
 автор: confirm   (27.08.2012 в 20:16)   письмо автору
 
   для: Sergeous   (27.08.2012 в 20:05)
 

BBcode

  Ответить  
 
 автор: Sergeous   (27.08.2012 в 20:17)   письмо автору
 
   для: confirm   (27.08.2012 в 20:16)
 

Пользователи должны иметь возможность использовать в тексте обычные html теги

  Ответить  
 
 автор: confirm   (27.08.2012 в 20:18)   письмо автору
 
   для: Sergeous   (27.08.2012 в 20:17)
 

И еще писать для вас php- js- сценарии, а вы их выполнять будете?

  Ответить  
 
 автор: Sergeous   (27.08.2012 в 20:20)   письмо автору
 
   для: confirm   (27.08.2012 в 20:18)
 

Не понял вас

  Ответить  
 
 автор: confirm   (27.08.2012 в 20:22)   письмо автору
 
   для: Sergeous   (27.08.2012 в 20:20)
 

А что тут непонятно то? Если вы хотите, чтобы пользователь оперировал разметкой страницы, это значит творить по своему разумению, то что мешает ему включить в эту разметку то, чего бы вам крайне нежелательно было бы?

  Ответить  
 
 автор: Sergeous   (27.08.2012 в 20:24)   письмо автору
 
   для: confirm   (27.08.2012 в 20:22)
 

Ввести список разрешенных тегов. И как-то же во многих движках это сделано.

  Ответить  
 
 автор: confirm   (27.08.2012 в 20:29)   письмо автору
 
   для: Sergeous   (27.08.2012 в 20:24)
 

Хочется, делайте, кто же вам запрещает. Но вам какая разница чего вводить - или [b] или <b>, только первое безопаснее. А уж сделать это как "визуальная вставка" тоже можно.
Что касается как хранить в базе, вот так и хранить, как есть, а при выводе карячится с поиском символов среди этого, которые бы надо в html-представление перевести...

Мое дело предложить, ваше дело отказаться.

  Ответить  
 
 автор: Rolex   (27.08.2012 в 20:44)   письмо автору
 
   для: confirm   (27.08.2012 в 20:29)
 

Здравствуйте. Решения на выбор:

При внесении информации использовать функции:

1. string strip_tags ( string str [, string allowable_tags] ) - Эта функция возвращает строку str, из которой удалены HTML и PHP тэги. Для удаления тэго используется автомат, аналогичный примененному в функции fgetss().

Необязательный второй аргумент ([, string allowable_tags] ) может быть использован для указания тэгов, которые не должны удаляться.

2. >>И как решить проблему, когда какой-нибудь пользователь не закроет определенный тег и это испортит оформление страницы? При грамотной обработке эта проблема не будет Вас беспокоить.

P.S.: Желаю творческих успехов.

  Ответить  
 
 автор: confirm   (27.08.2012 в 20:47)   письмо автору
 
   для: Rolex   (27.08.2012 в 20:44)
 

Здравствуйте. Спасибо, но мне этого не надо.

  Ответить  
 
 автор: Rolex   (27.08.2012 в 20:50)   письмо автору
 
   для: confirm   (27.08.2012 в 20:47)
 

Извиняюсь за беспокойство :)

  Ответить  
 
 автор: Rolex   (27.08.2012 в 20:51)   письмо автору
 
   для: Sergeous   (27.08.2012 в 20:24)
 

Здравствуйте. Решения на выбор:

При внесении информации использовать функции:

1. string strip_tags ( string str [, string allowable_tags] ) - Эта функция возвращает строку str, из которой удалены HTML и PHP тэги. Для удаления тэго используется автомат, аналогичный примененному в функции fgetss().

Необязательный второй аргумент ([, string allowable_tags] ) может быть использован для указания тэгов, которые не должны удаляться.

2. >>И как решить проблему, когда какой-нибудь пользователь не закроет определенный тег и это испортит оформление страницы? При грамотной обработке эта проблема не будет Вас беспокоить.

P.S.: Желаю творческих успехов.

  Ответить  
 
 автор: confirm   (27.08.2012 в 20:58)   письмо автору
 
   для: Rolex   (27.08.2012 в 20:51)
 

Все это "розово" конечно, гладко... А почему вы думаете, что я не смогу выполнить активный скрипт в "разрешенном" теге?

  Ответить  
 
 автор: Sergeous   (27.08.2012 в 21:03)   письмо автору
 
   для: Rolex   (27.08.2012 в 20:51)
 

Спасибо. Буду пробовать strip_tags

  Ответить  
 
 автор: confirm   (27.08.2012 в 21:09)   письмо автору
 
   для: Sergeous   (27.08.2012 в 21:03)
 

Не поможет вам strip_tags, да и работает она некорректно.

  Ответить  
 
 автор: Sergeous   (27.08.2012 в 21:13)   письмо автору
 
   для: confirm   (27.08.2012 в 21:09)
 

Значит найду другой способ. Смотрю, как в популярных движках сделано. Во всех почти можно использовать html для оформления.

  Ответить  
 
 автор: confirm   (27.08.2012 в 21:24)   письмо автору
 
   для: Sergeous   (27.08.2012 в 21:13)
 

Возьмите готовый визуальный редактор, а про strip_tags забудьте.

  Ответить  
 
 автор: DJ Paltus   (27.08.2012 в 22:27)   письмо автору
 
   для: confirm   (27.08.2012 в 21:24)
 

Готовый визуальный редактор хорош, если пользователю не надо большинства возможностей разметки, а нужен тупо WYSIWYG. Да и на стороне клиента, где визуальные редакторы работают, защиту от вредного кода не поставишь, увы.
Я однажды лет шесть тому по незнанию что-то нахулиганил в шаблоне для своего ЖЖ, так у меня потом вообще вся лента развалилась, и не только она, а еще и сама система редактирования шаблона перестала работать. Спасся с помощью ljPlus, там как-то один валидный пост прошел, и журнал самовосстановился.

  Ответить  
 
 автор: confirm   (27.08.2012 в 22:40)   письмо автору
 
   для: DJ Paltus   (27.08.2012 в 22:27)
 

А если нужен только WYSIWYG, то его можно самому сделать, и на не html-тегах, а на ВВ. Не такая уж это и сверх задача.

  Ответить  
 
 автор: DJ Paltus   (27.08.2012 в 20:45)   письмо автору
 
   для: Sergeous   (27.08.2012 в 20:05)
 

Видео вставлять не так уж и просто, потому что некоторые источники умеют это делать только через iframe, что само по себе опасно. В остальном - достаточно ввести список разрешенных тегов (strip_tags) и найти типограф, наподобие того, что вроде бы используется в codemirror, чтобы закрывать незакрытое, но на уровне сервера, а не клиента.
Но осторожность не помешает. Может, у задачи есть более простое решение?

  Ответить  
 
 автор: Sergeous   (27.08.2012 в 21:19)   письмо автору
 
   для: DJ Paltus   (27.08.2012 в 20:45)
 

Вот кое что нашел: http://jevix.ru/project/

  Ответить  
 
 автор: Sergeous   (27.08.2012 в 21:38)   письмо автору
 
   для: DJ Paltus   (27.08.2012 в 20:45)
 

Вернее даже вот это http://code.google.com/p/jevix/

  Ответить  
 
 автор: DJ Paltus   (27.08.2012 в 22:25)   письмо автору
 
   для: Sergeous   (27.08.2012 в 21:38)
 

Я про него малость слышал, но ничего сказать не могу. Если он хорошо делает то, что там описано, то это как раз то, что надо.

  Ответить  
 
 автор: Jaroslav   (30.08.2012 в 13:27)   письмо автору
 
   для: Sergeous   (27.08.2012 в 21:38)
 

Спасибо, позырим.
Конфирма не слушайте с его BB - кодом.
У самого такая же задача стоит, будем писать скрипты по обработке (проверке) данных.
Не так страшен XSS как его малюют ))
Чем больше нас имеют, тем умнее мы становимся...
Взломать можно абсолютно любой сайт - вопрос времени и желания. Надо заниматься мониторингом...

http://softtime.ru/forum/read.php?id_forum=1&id_theme=40204#post231047 - вот тут Триан что-то дельное советовал..

  Ответить  
 
 автор: confirm   (30.08.2012 в 15:44)   письмо автору
 
   для: Jaroslav   (30.08.2012 в 13:27)
 

Да по мне, так вы хоть на С++ пишите свои страницы, и сразу с троянами, коли не страшно.
Дело не в ВВ как таковом, а в том, чего и насколько надо. Надо много - есть уже готовое, если сами не могем.

  Ответить  
 
 автор: никчай   (31.08.2012 в 00:05)   письмо автору
 
   для: Sergeous   (27.08.2012 в 20:05)
 

Для безопасности можно создать массив где первый элемент будет, например, див, второй таблица и т.д.. после этого можете только числа принимать от клиента. Это целесообразно, т.к. вряд ли вы будете давать возможность строить с нуля

  Ответить  
 
 автор: Sergeous   (05.09.2012 в 19:34)   письмо автору
 
   для: Sergeous   (27.08.2012 в 20:05)
 

Скажите, если я разрешаю использовать тег div, а в нем style - это безопасно?

<div style="text-align:left" >fghf</div>

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования