• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

Помощь Как убрать экранирование при сохранение новости

Статус
В этой теме нельзя размещать новые ответы.

Trial

Участник
Регистрация
27 Май 2008
Сообщения
175
Реакции
8
Я уже оставлял похожий пост в теме к релизу DLE 7.5 думая, что это проблема только версии masima, а оказалось, что это проблема есть и у mid-mena и у лицензии (активировал кейгеном). Поэтому решил создать отдельную тему.
Проблема следующая.

При добавление новости через визивинг редактор, пример:
HTML:
<img src="http://data5/uploads/posts/2009-02/1235234879_motivatsia20.jpg" border="0" alt="alt" align="left" /><br />В прошлом сезоне вернувшееся в суперлигу Торпедо заняло последнее, 20-е место, потому состав команды изрядно

В БД текст этой новости (а именно HTML) выглядит по другому:

HTML:
<img src=\"http://data5/uploads/posts/2009-02/1235234879_motivatsia20.jpg\" border=\"0\" alt=\"alt\" align=\"left\" /><br />В прошлом сезоне вернувшееся в суперлигу Торпедо заняло последнее, 20-е место, потому состав команды изрядно

Т.е., если кто то не заметил, все " в БД экранированые, по этому все модули которые работают с картинками в короткой и полной новости (а это - lastnews, CSSY, catindex) этих картинок просто не замечают и не чего не выводят.

В 7.3 такого нет.

Как поправить (убрать экранирование)?

P.S. При использование BB-код новости сохраняются как положено (без экранирования)
 
Ну вообще в PHP некоторые кавычки (") всегда экранируются \
если убрать \ то будет вылетать ошибка... В БД хранится обработанная PHP информация... Выход один, учить сторонние модули работать с экранированием
 
Может " равно & # 3 4; без пробелов?
 
Дак я же сказал в 7.3 да и наверно в болtе ранних версиях такого нет (сохраняется без экранирования), а здесь (в 7.5) наверно просто ошибка какая та.
Да и глупо это сохранять в БД с экранированием.

Конечно можно каждый раз после добавления новости лазать в БД и удалять экранирование (кстати, поле того как его убираешь, все работает нормально: ошибок не выдает), но такая переспектива мне не совсем нравиться.

P.S. Гляньте на три дефолтных новости в БД, там все картинки без экранирования и попробуйте добавьте свою новость или поменяйте картинку в дефолтной (через админку с использованием визивинг) и поглядите в БД они появяться уже с экранированием. Так что это явно ошибка.

Как поправить?
 
раз проблева в визвиге, то думаю это уже не ДЛЕ и чисто к визвигу, попробуйте визвиг заменить более раними версия, с той дле 7.3...
 
Нет не помогло!

WYSIWYG я переставлял с версии 7.3 не помогает.
Проблема не в WYSIWYG, а в чем-то другом.
 
эта проблема также интересует, решение с установкой передыдущих версий вививинга также не спасло!, знатоки вопрос к вам как пофиксить?
 
Я уже даже на форуме DLE пару постов оставил (там у кого-то такая же проблема), целсофт мне написал что типо так всегда было хотя - это не так, уже одно то, что дефолтные новости без экранирования, об этом говорит.

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

там кто-то сказал, что целсофт просто наверно сделал лишнее экранирование и получается, что один \ экранирует другой \ вот по этому и проблема.

копать нужно приблизительно вот это:

(engine/classes/mysql.class.php)

function safesql( $source )
{
if ($this->db_id) return mysql_real_escape_string ($source, $this->db_id);
else return mysql_escape_string($source);
}

и сделать как то вот по такому принцыпу

PHP:
<?php
// Функция экранирования переменных
function quote_smart($value)
{
    // если magic_quotes_gpc включена - используем stripslashes
    if (get_magic_quotes_gpc()) {
        $value = stripslashes($value);
    }
    // Если переменная - число, то экранировать её не нужно
    // если нет - то окружем её кавычками, и экранируем
    if (!is_numeric($value)) {
        $value = "'" . mysql_real_escape_string($value) . "'";
    }
    return $value;
}

// Соединяемся
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
    OR die(mysql_error());

// Составляем безопасный запрос
$query = sprintf("SELECT * FROM users WHERE user=%s AND password=%s",
            quote_smart($_POST['username']),
            quote_smart($_POST['password']));

mysql_query($query);
?>

или вот в этом engine/inc/addnews.php

Может кто поправит а то ведь столько модулей из-за этой фигни не работает - верней работает но каждый раз лазить в БД чтоб удалить \ уже надоело
 
Кстати, по поводу редактора.
Обнаружил ещё несколько странностей.
Первая в редактировании новостей или статических страниц. При задании жирного текста редактор добавляет тег <strong>, который никак не отображается при просмотре. Приходится задавать атрибут текста через <span>.
Вторая проблема в добавлении параметра onClick в оператор <INPUT class=submit-button type=submit value=" отправить " />. При редактировании HTML в редакторе после отправки буква "о" в onClick заменяется на &117; (получается что то вроде &117;nClick). Приходится лезть в базу и вручную исправлять &117; на "о" ...
Вообще не отображаются списки (<ul><li>...) В окне редактора всё в порядке, а при отправке форматирование исчезает. Может быть есть ещё глюки, пока что обнаружил только эти.
Нулл от masima (7.5), пробовал так-же на лицензии с генерированным ключом и на демоверсии с оффсайта (7.3). Вся эта байда случается только в WYSIWYG.
 
Тоже проблема с экранированием кавычек, только у меня при использовании ajax при быстром редактировании. В версии 7.5 это уже вроде бы исправлено, но у меня 7.2, обновляться не планирую. Может ли кто-нибудь помочь исправить это экранирование?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху