обработка данных WYSIWYG в PHP - PullRequest
1 голос
/ 03 августа 2011

Мне нужно использовать редактор wysiwyg для обработки пользовательского ввода.

Как вы обрабатываете это в php?

Если я получу данные и использую htmlspecialchars, то все символы, которые были преобразованы в специальные символы редактором wysiwyg, будут испорчены.

пример цитаты будет &quote;

тогда, когда я использую htmlspecialchars в php, & будет преобразован в &

кажется очевидной проблемой. есть идеи?

Ответы [ 2 ]

0 голосов
/ 03 августа 2011

Большинство редакторов (CKEditor, CLEditor и NicEdit и многие другие) поддерживают два режима ввода: визуальный и прямой ввод (обычно называемый режимом HTML).

Когда пользователь вводит текст в визуальном режиме,редактор заботится о преобразовании html-подобных символов в соответствующую сущность HTML, пока пользователь печатает свой контент.В этом режиме редактор обычно добавляет для пользователя разметку (в основном абзацы).

Прямой ввод работает так, как вы ожидаете от имени;Пользователь подвергается воздействию HTML, из которого состоит его или ее содержимое.

Способ обработки входных данных в основном зависит от роли пользователя.

Если пользователю доверяют (т.е.администратор веб-сайта компании), пользователь должен иметь возможность использовать оба режима ввода.

Если пользователь не является доверенным (анонимный пользователь, оставляющий комментарий к записи в блоге), пользователь не должен иметь возможность вводить (потенциально злонамеренную, думаю, XSS ) разметку.

Если вашим пользователям требуются некоторые опции для форматирования их контента, вам, вероятно, следует рассмотреть возможность использования разметки другого типа, например BBCode .Это не позволяет пользователю вставлять любые теги <script> в контент, который может быть показан другим пользователям.

Вам все равно нужно будет удалить любые HTML-теги из пользовательского контента.

0 голосов
/ 03 августа 2011

Рассматривали ли вы сохранение обычного текста и дополнительной записи HTML, что бы ни изменялось?Вы можете отобразить открытый текст, а когда вы сохраните его, вы можете также преобразовать его в html и сохранить в отдельном поле?

Если специальные символы конвертируются в HTML, они все равно не будут отображаться правильно (дляпользователь), когда вы печатаете текст в редактируемые поля формы в HTML?

Дайте мне знать, если я неправильно понял

...