Вопрос по кавычкам в DBSimple.

Camillo

Новичок
Вопрос по кавычкам в DBSimple.

Словил порядочного клина...

Какая-то непонятная проблема. Есть форма редактирования строки из БД. Информацию в эту форму гружу предварительно сделав htmlspecialchars($var, ENT_QUOTES). Далее отредактированную инф-ию помещаю в БД (через JSHttpRequest); с БД взаимодействую через DBSimple.

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

Т.е. например в форму ввожу данные
</textarea><span style="font-size:20px;">XSS</span><textarea>
и сохраняю - получаю
</textarea><span style=\"font-size:20px;\">XSS</span><textarea>
еще раз
</textarea><span style=\\\"font-size:20px;\\\">XSS</span><textarea>

Странно, ведь в DBSimple встроена проверка на magic_quotes.
По-идее такого быть вообще не должно.

Подскажите пожалуйста - в чем может быть проблема?

P.S. Непосредственно в БД проверял строку - данные такие же, как в форме, т.е. со слешами.
 

Camillo

Новичок
Ну и что там такого, что я не написал?
Перед выводом в форму делаю htmlspecialchars
При работе с БД исп-ую рекомендованый там же DBSimple.

-~{}~ 27.11.08 21:34:

При составлении запросов разумеется использую плэйсхолдеры.
 

Camillo

Новичок
Уважаемые, я всё понимаю, но тут (http://phpfaq.ru/slashes) написано, что пофигу на значения magic_quotes и т.д., если используется специальная библиотека (в данном случае - DBSimple). Я никак не подготавливаю данные и через плейсхолдеры передаю их в DBSimple->query().

Мне почему-то казалось, что DBSimple при обработки данных учитывает magic_quotes и т.д.? Я не прав?
 

fixxxer

К.О.
Партнер клуба
как устроен dbsimple надо спрашивать у его автора. или смотреть исходники.

а еще можно взять просто и отключить magic quotes и проверить, а не гадать на кофейной гуще
 

Camillo

Новичок
Угу, с выкл. magic_quotes всё нормально.

P.S.: Зачем тогда рекоммендовать читать http://phpfaq.ru/slashes , где "рекламируется" DBSimple?

-~{}~ 27.11.08 21:54:

P.S. В DBSimple для экранирования исп-ся вот такой метод

PHP:
    function _performEscape($s, $isIdent=false)
    {
        if (!$isIdent) {
            return "'" . mysql_real_escape_string($s, $this->link) . "'";
        } else {
            return "`" . str_replace('`', '``', $s) . "`";
        }
    }
-~{}~ 27.11.08 21:55:

Придется добавить пре-подготовку всего $_REQUEST.
 
Сверху