добавлено преобразование в специальные сущности если вставили код в текст комментария , пофиксено добавление переноса строки если ранее уже был перенос строки - в итоге между строками увеличивалась путота
This commit is contained in:
@@ -21,7 +21,7 @@
|
||||
* Файлы
|
||||
* Авторы могут загружать в свои комментарии разрешенные в Админ панели файлы.
|
||||
* Размер и тип файла задаются в Админ панели. Отдельные права для Анонимов. Для изображений выводятся их превью, для остальных превью с именем расширения этого файла.
|
||||
|
||||
* Важно! Разрешив загрузку файлов, особенно Анонимам - вы подвергаете свой сайт дополнительным рискам! Относитесь к этой функции с максимальной острожностью.
|
||||
* Дополнительные поля
|
||||
* Два дополнительных поля, их названия и обязательные или нет, настраиваются в Админ панели
|
||||
* Валидация обязательных полей на заполненность + проверка на разрешения для файлов
|
||||
|
||||
@@ -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. ПРЕВРАЩАЕМ теги в текст (экранируем), а не вырезаем их
|
||||
// Теперь <?php станет <?php и просто отобразится как текст
|
||||
$comment_text_safe = htmlspecialchars($comment_text_raw, ENT_QUOTES, 'UTF-8');
|
||||
|
||||
// 4. Подготавливаем для вставки в SQL запрос
|
||||
$new_comment['comment_text'] = addslashes($comment_text_safe);
|
||||
|
||||
$AVE_DB->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('/&#x([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("<br>\n", "<br />\n", "<br/>\n", "<br>", "<br />"), "\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. Декодируем сущности (чтобы не было &lt;)
|
||||
$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);
|
||||
|
||||
// Теперь заменяем <br> (если они есть) на \n, но так, чтобы не создавать лишних пустых строк
|
||||
$comment_text = preg_replace('/<br\s*\/?>\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;
|
||||
|
||||
|
||||
// Работа с изображениями (МУЛЬТИЗАГРУЗКА И УДАЛЕНИЕ)
|
||||
|
||||
@@ -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(/<br\s*\/?>/mg, "\n").trim();
|
||||
// сначала декодируем HTML обратно в текст, а регулярка теперь «съедает» и тег, и возможный перенос после него
|
||||
var cleanText = $textBlock.html()
|
||||
.replace(/<br\s*\/?>\n?/gi, "\n") // Убираем <br> и ОДИН символ переноса за ним, если он есть
|
||||
.trim();
|
||||
|
||||
// --- СБОР ТЕКУЩИХ ВЛОЖЕНИЙ ---
|
||||
var existingImagesHtml = '';
|
||||
|
||||
Reference in New Issue
Block a user