Система WMD Stackoverflows - Где мой ввод становится HTML? - PullRequest
2 голосов
/ 06 февраля 2009

На каком этапе мой ввод в текстовой области из этого необработанного текста становится HTML? Например, я говорю отступ в 4 пробела

like this

Тогда WMD Showdown.js будет правильно отображать его под этой текстовой областью, которую я ввожу. Но текстовая область по-прежнему буквально содержит

    like this

Так отвечает ли серверная сторона PHP за перевод всех тех же вещей, которые showdown.js делает постоянным для HTML в базе данных SoF?

Ответы [ 2 ]

8 голосов
/ 06 февраля 2009

Здесь есть несколько других сообщений об этом, но в основном это работает так. Или, по крайней мере, так я делаю это на своем сайте, используя ОМУ; см. мой профиль, если вы хотите проверить мою реализацию ОМУ.

  1. Пользователь вводит Markdown на клиенте, и showdown.js запускается в режиме реального времени в браузере (чистый клиентский JavaScript; без AJAX или чего-либо подобного), чтобы предоставить пользователю предварительный просмотр.
  2. Затем, когда пользователь отправляет сообщение на сервер, WMD отправляет уценку (хотя для этого необходимо настроить WMD; по умолчанию WMD отправляет HTML).
  3. Запустите showdown.js на стороне сервера, чтобы преобразовать Markdown в HTML. Теоретически вы можете использовать какой-то другой метод, но имеет смысл попытаться получить то же преобразование на сервере, которое пользователь видит на клиенте, кроме фильтрации HTML-тегов, которую вы хотите выполнить на стороне сервера.
  4. Как только что было отмечено, вам необходимо выполнить соответствующую фильтрацию тегов HTML, чтобы избежать проблем межсайтового скриптинга (XSS). Это важно и нетривиально, поэтому будьте осторожны.
  5. Сохраните Markdown и HTML в базе данных & mdash; Markdown, потому что если пользователи хотят редактировать свои сообщения, вы должны предоставить им Markdown и HTML, чтобы вам не приходилось каждый раз преобразовывать Markdown в HTML. показать ответы.

Вот несколько похожих постов.

1 голос
/ 06 февраля 2009

Ну, во-первых, StackOverflow построен на ASP.NET, но, по сути, символы в поле расширенного текста переводятся туда и обратно.

...