Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как починить добавление тегов?

Как починить добавление тегов?


     08.09.2022    теги    Все вопросы » Общие вопросы по PHP    459

вопрос
DLE 12.1

В DLE при создании тегов не учли воможность наличия в тегах одинарной кавычки ( ' - не знаю, как правильно называется). Лечится сия ошибка заменой одинарных кавычек в коде двойными кавычками. Проблема одинарной кавычки встречается всюду постоянно, например заливка торрентов на турбобите...

Но "лечить" уже поздно - сайту 12 лет и за это время добавлены тысячи новостей с "исправленой кавычкой" (вместо ' делал ’ ("верхнюю запятую")) и добавление "неиспраленых кавычек" будет создавать "новые теги".

Посему хочу сделать автозамену одинарной кавычки на "исправленую". Надоело уже ручками переделывать...

Сама замена крайне проста - перед записью в базу нужно заменить кавычку (код условный):

$tags = str_replace ("", "’", $tags);


Вопрос лишь в том в каких файлах перед чем подставить? Прошу подсказать знающих людей...

Лично мне кажется, что в двух файлах engine\inc\addnews.php и engine\modules\addnews.php

Думаю либо после:

if( @preg_match( "/[\||\<|\>|\"|\!|\?|\$|\@|\/|\\\|\&\~\*\+]/", $_POST['tags'] ) ) $_POST['tags'] = "";


либо после:

if ( $_POST['tags'] ) {


поставить:

$_POST['tags'] = str_replace ( "", "’", $_POST['tags'] );


Угадал ли я или совсем нет, или не полностью (ещё куда-то нужно поставить)?

Заранее благодарю...

Ответа пока нет


3 комментария

TeraMoune
Эксперт

TeraMoune - 8 сентября 2022 12:13 -

Одинарные кавычки уже давно экранируются и их можно использовать.

Тестовый репозиторий установки плагинов: teramoune

NONSENS
Юзер

NONSENS - 8 сентября 2022 12:48 -

А Земля круглая. Спасибо за исчерпывающий ответ...
Когда POSTом приходит одинарная кавычка в переменную $_POST['tags'], это создаёт ошибку, ведь никто до прихода кавычку не экранировал.

Вопрос то не в этом, впрос: "куда ставить то?" Необходимо заменить приходящую одинарную кавычку "верхней запятой".
Пока ответ писал, понял (пришёл к выводу), что всё равно придётся одинарные кавычки в $_POST['tags'] заменять двойными, чтобы ошибку исключить.

TeraMoune
Эксперт

TeraMoune - 8 сентября 2022 17:39 -

Это не ответ был, а простой комментарий. (С чего вы решили, что всякий комментарий призван оказаться ответом, типа что просто так нельзя ничего написать ?)

Когда POSTом приходит одинарная кавычка в переменную $_POST['tags'], это создаёт ошибку, ведь никто до прихода кавычку не экранировал.

Когда мы отправляем новую новость с данными или редактируем её то форма отправляется как раз методом POST и всё отлично там с кавычками. Перепроверил на всякий, никаких проблем и ошибок не происходит.

Вставляйте замену в начале, нашли переменную где в первые появляется $_POST['tags']
например из файла editnews.php
$_POST['tags'] = isset($_POST['tags']) ? $_POST['tags'] : '';

И на следующей строчке добавляете str_replace. Можете в самой строчке добавить замену, можете перед. Короче как вам красивей и приятней так и делайте, главное до возникновения ошибки и до момента когда переменная попадёт в базу.

Тестовый репозиторий установки плагинов: teramoune

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх