diff --git a/README.md b/README.md
index e89b5b1..38582ad 100644
--- a/README.md
+++ b/README.md
@@ -21,7 +21,7 @@
* Файлы
* Авторы могут загружать в свои комментарии разрешенные в Админ панели файлы.
* Размер и тип файла задаются в Админ панели. Отдельные права для Анонимов. Для изображений выводятся их превью, для остальных превью с именем расширения этого файла.
-
+ * Важно! Разрешив загрузку файлов, особенно Анонимам - вы подвергаете свой сайт дополнительным рискам! Относитесь к этой функции с максимальной острожностью.
* Дополнительные поля
* Два дополнительных поля, их названия и обязательные или нет, настраиваются в Админ панели
* Валидация обязательных полей на заполненность + проверка на разрешения для файлов
diff --git a/class/comment.php b/class/comment.php
index e60eb62..7d6524f 100644
--- a/class/comment.php
+++ b/class/comment.php
@@ -714,9 +714,24 @@ if ($is_allowed_ext && !$is_dangerous && $file['size'] > 0 && $file['size'] <= $
if ($user_rating < 0) $user_rating = 0; if ($user_rating > 5) $user_rating = 5;
$new_comment['user_rating'] = $user_rating;
- $comment_text_raw = $_POST['comment_text'] ?? '';
- $comment_text_clean = strip_tags(stripslashes($comment_text_raw));
- $new_comment['comment_text'] = addslashes($comment_text_clean);
+ // --- ПОДГОТОВКА И ОБРАБОТКА ТЕКСТА КОММЕНАТРИЯ ЖЕСТКАЯ (вырежет весь тест как только встретит < тег) ---
+ //$comment_text_raw = $_POST['comment_text'] ?? '';
+ //$comment_text_clean = strip_tags(stripslashes($comment_text_raw));
+ //$new_comment['comment_text'] = addslashes($comment_text_clean);
+
+ // --- ПОДГОТОВКА И ОБРАБОТКА ТЕКСТА КОММЕНАТРИЯ МЯГКАЯ (с соранением в виде специальных сущностей) ---
+ // 1. Получаем сырой текст
+ $comment_text_raw = $_POST['comment_text'] ?? '';
+
+ // 2. Убираем лишние слеши
+ $comment_text_raw = stripslashes($comment_text_raw);
+
+ // 3. ПРЕВРАЩАЕМ теги в текст (экранируем), а не вырезаем их
+ // Теперь Query("INSERT INTO " . PREFIX . "_module_comment_info (`" . implode('`,`', array_keys($new_comment)) ."`) VALUES ('" . implode("','", $new_comment) . "')");
$new_comment['Id'] = $AVE_DB->InsertId();
@@ -803,18 +818,34 @@ function commentPostEdit($comment_id)
}
// Обработка текста
- $comment_text = $_POST['text'] ?? '';
-
- $comment_text = preg_replace_callback('/([0-9a-f]{1,7});/i', function($matches) { return chr(hexdec($matches[1])); }, $comment_text);
- $comment_text = preg_replace_callback('/([0-9]{1,7});/', function($matches) { return chr($matches[1]); }, $comment_text);
-
- $comment_text = stripslashes($comment_text);
- $comment_text = str_replace(array("
\n", "
\n", "
\n", "
", "
"), "\n", $comment_text);
- $comment_text = strip_tags($comment_text);
-
- $max = ($row['comment_max_chars'] > 10) ? (int)$row['comment_max_chars'] : 1000;
- $comment_text_cut = mb_substr($comment_text, 0, $max);
- if (mb_strlen($comment_text) > $max) $comment_text_cut .= '…';
+// 1. Получаем текст
+$comment_text = $_POST['text'] ?? '';
+
+// 2. Убираем слеши
+$comment_text = stripslashes($comment_text);
+
+// 3. Декодируем сущности (чтобы не было <)
+$comment_text = html_entity_decode($comment_text, ENT_QUOTES, 'UTF-8');
+
+// 4. УБИРАЕМ ДУБЛИРОВАНИЕ СТРОК:
+// Сначала превращаем все варианты переносов (Windows \r\n, Mac \r) в единый \n
+$comment_text = str_replace(array("\r\n", "\r"), "\n", $comment_text);
+
+// Теперь заменяем
(если они есть) на \n, но так, чтобы не создавать лишних пустых строк
+$comment_text = preg_replace('/
\n?/i', "\n", $comment_text);
+
+// Удаляем лишние пробелы в концах строк (необязательно, но полезно)
+$comment_text = implode("\n", array_map('trim', explode("\n", $comment_text)));
+
+// 5. БЕЗОПАСНОСТЬ: Экранируем обратно для базы
+$comment_text = htmlspecialchars($comment_text, ENT_QUOTES, 'UTF-8');
+
+// 6. Ограничение по длине (как у тебя и было)
+$max = ($row['comment_max_chars'] > 10) ? (int)$row['comment_max_chars'] : 1000;
+if (mb_strlen($comment_text) > $max) {
+ $comment_text = mb_substr($comment_text, 0, $max) . '…';
+}
+$comment_text_cut = $comment_text;
// Работа с изображениями (МУЛЬТИЗАГРУЗКА И УДАЛЕНИЕ)
diff --git a/js/comment.js b/js/comment.js
index eba9b22..395c2db 100644
--- a/js/comment.js
+++ b/js/comment.js
@@ -587,7 +587,10 @@ $doc.off('click', '.mod_comment_edit').on('click', '.mod_comment_edit', function
$('.mod_comment_text').show();
$('.mod_comment_attached_image, .comment-files').show();
- var cleanText = $textBlock.html().replace(/
/mg, "\n").trim();
+ // сначала декодируем HTML обратно в текст, а регулярка теперь «съедает» и тег, и возможный перенос после него
+ var cleanText = $textBlock.html()
+ .replace(/
\n?/gi, "\n") // Убираем
и ОДИН символ переноса за ним, если он есть
+ .trim();
// --- СБОР ТЕКУЩИХ ВЛОЖЕНИЙ ---
var existingImagesHtml = '';