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

Тема в разделе "DLE", создана пользователем Trial, 23 фев 2009.

Информация :
Актуальная версия DataLife Engine 11.3
( Final Release v.11.3 | Скачать DataLife Engine | Скачать 11.3 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.2 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. Trial

    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-код новости сохраняются как положено (без экранирования)
     
  2. trojan.exe

    trojan.exe Постоялец

    Регистр.:
    11 июл 2007
    Сообщения:
    89
    Симпатии:
    7
    Ну вообще в PHP некоторые кавычки (") всегда экранируются \
    если убрать \ то будет вылетать ошибка... В БД хранится обработанная PHP информация... Выход один, учить сторонние модули работать с экранированием
     
  3. MyCreature

    MyCreature Постоялец

    Регистр.:
    5 окт 2008
    Сообщения:
    83
    Симпатии:
    5
    Может " равно & # 3 4; без пробелов?
     
  4. Trial

    Trial

    Регистр.:
    27 май 2008
    Сообщения:
    175
    Симпатии:
    8
    Дак я же сказал в 7.3 да и наверно в болtе ранних версиях такого нет (сохраняется без экранирования), а здесь (в 7.5) наверно просто ошибка какая та.
    Да и глупо это сохранять в БД с экранированием.

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

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

    Как поправить?
     
  5. jred

    jred

    Регистр.:
    16 сен 2008
    Сообщения:
    383
    Симпатии:
    39
    раз проблева в визвиге, то думаю это уже не ДЛЕ и чисто к визвигу, попробуйте визвиг заменить более раними версия, с той дле 7.3...
     
  6. Trial

    Trial

    Регистр.:
    27 май 2008
    Сообщения:
    175
    Симпатии:
    8
    Нет не помогло!

    WYSIWYG я переставлял с версии 7.3 не помогает.
    Проблема не в WYSIWYG, а в чем-то другом.
     
  7. H01mes

    H01mes В прошлом rkinfo

    Регистр.:
    28 авг 2008
    Сообщения:
    129
    Симпатии:
    27
    эта проблема также интересует, решение с установкой передыдущих версий вививинга также не спасло!, знатоки вопрос к вам как пофиксить?
     
  8. Trial

    Trial

    Регистр.:
    27 май 2008
    Сообщения:
    175
    Симпатии:
    8
    Я уже даже на форуме 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

    Может кто поправит а то ведь столько модулей из-за этой фигни не работает - верней работает но каждый раз лазить в БД чтоб удалить \ уже надоело
     
  9. alkov

    alkov Создатель

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

    Хомячок

    Регистр.:
    10 апр 2008
    Сообщения:
    184
    Симпатии:
    103
    Тоже проблема с экранированием кавычек, только у меня при использовании ajax при быстром редактировании. В версии 7.5 это уже вроде бы исправлено, но у меня 7.2, обновляться не планирую. Может ли кто-нибудь помочь исправить это экранирование?
     
Статус темы:
Закрыта.