Неприятный момент с ошибками кода в коментах

Возникла следующая ситуация:
В шаблоне обработки видео (то которое в тэгах video> там где ссылки с ютуба во фрейм засовываются), был изменен код, и измененный код содержал ошибку (незакрытый тэг).

В результате форматирование сайта сломалось (что очевидно).
А вот что было полной неожиданностью — это то, что вот этот код попал
1) в табличку контента
2) код попал в табличку с коментами

В результате по ссылке «Новые» — отображение сайта сломалось, даже после восстановления исходного шаблона обработки тэга video> , и удаления топика содержащего невалидный код.

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

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

7 комментариев

0
В результате форматирование сайта сломалось (что очевидно).
Да вот как-то не очень очевидно. Вот, попробовал воспроизвести проблему:
demo.altocms.com/new/39.html

Не получилось. Т.е. сам текст топика, конечно, сломался, но верстка страницы в целом не пострадала. Испробованные варианты:

<video>https://www.youtube.com/watch?v=uT3SBzmDxGk</video>
<video>https://www.youtube.com/watch?v=uT3SBzmDxGk/video>
<video>https://www.youtube.com/watch?v=uT3SBzmDxGk video>
<video>https://www.youtube.com/watch?v=uT3SBzmDxGk >
<video>https://www.youtube.com/watch?v=uT3SBzmDxGk

Возможно, там не просто тег был не закрыт, а какая-то особая комбинация, которая все сломала
0
Так там же тэг был незакрыт не у <видео>, а у того на что поменялось… а поменялось на <ифрэйм> и куча всего в ифрэйме. Я конечно сам виноват что так произошло, но вот оказывается есть такой момент… обновлять чтото в коде лучше при выключенном сайте…
0
Так правки прямо в базе что ли выполнялись или как? Можете описать пошагово, как получить ошибку? Я не из праздного любопытства спрашиваю. Мне важно понять, можно ли как-то на уровне движка предотвратить ошибку или тут сугубо «человеческий фактор» и с этим уже ничего не поделаешь
0
В файле engine/classes/modules/text/Text.class.php

Ниже кода
$sText = preg_replace(
'/<видео>http(?:s|):\/\/(?:www\.|)rutube\.ru\/video\/(\w+)\/?<\/видео>/Ui',
'<ифрэйм src="//rutube.ru/play/embed/$1" width="'. $iWidth. '" height="'. $iHeight. '" '. $sIframeAttr. '></ифрэйм>',
$sText
);

Был добавлен собственный код, аналогично обрабатывающий ссылку с другого медиаресурса.
В коде который был в ифрэйме- была ошибка (тэг ифрейма не закрыт).
Поэтому форматировнаие сломалось напрочь.

А вот почему в момент вставки поста, в котором был тэг который обработался через этот этого preg_replace, текст заменился и в других коментариях к совершенно другим постам которые в этот момент набирали люди на сайте — я не совсем понимаю.
0
Ага, теперь стало понятней. Буду смотреть
0
если в этих шаблонах будут допущены ошибки со стилями или тэгами — то вычищать из базы и восстанавливать нормальный вид сайта придется руками
Потому что подобные изменения надо проводить на локальном или тестовом сервере, а не в продакшене, где сидят живые люди, и база важна. Это проблема не движка, но подхода к работе.
Отредактирован:
+1
А почему вы решили что это продакшен?
Если бы это был продакшен — ситуация называлась бы не «неприятностью» а как-то иначе :)
Тестирование ресурса происходит по многим критериям. И по функционалу, и по юзабилити… Поэтому на ресурсе присутствует много тестеров, занимающихся своими участками работ. Оценивается интуитивность интерфейса, отзывчивость, эргономичность. Понятно что при этих тестах с системой работают живые люди. В том числе создающие контент и пишущие коменты. Параллельно в систему добавляется новый функционал, но при этом перезагрузки сервера не происходит а просто сбрасываются кэши (если надо).

Например было выдано замечание что в коментах не работает переход на новую строку по Энтер.
На самом деле после сохранения коментария в тех местах где жали Энтер потом будет вставлен тэг брейк, но в момент редактирования это не очевидно.
Отредактирован:
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.