KO3 / Kohana3: Как избежать кавычек (двойных и одинарных) перед сохранением в db с ORM с использованием values ​​()? - PullRequest
0 голосов
/ 18 августа 2010

Я разрешаю пользователям отправлять вопросы, и они должны иметь возможность использовать одинарные кавычки в заголовке.В настоящее время, если заголовок содержит одну цитату, он будет представлен правильно.$question->values($post_data); $question->save();

Есть какие-нибудь идеи о том, как я могу настроить Kohana, чтобы он избегал этой единственной цитаты или избегал моей информации?Я хотел бы избежать необходимости добавлять косые черты () для каждого ввода и удалять косые черты () для каждого дисплея ...

Большое спасибо, ТАК сообщество!(Этот вопрос ставится перекрестно на http://forum.kohanaframework.org/comments.php?DiscussionID=6525)

Ответы [ 2 ]

2 голосов
/ 18 августа 2010

На самом деле, вы никогда не должны использовать addlashes () для экранирования значений БД вообще. Особенно в Kohana, так как значения «экранируются» при сохранении (пример, который вы приводите, это ORM, вы всегда можете испортить пользовательский запрос к БД, чтобы получить MySQL-инъекцию / сломанный запрос).

Если вы не хотите, чтобы что-то экранировалось, оберните это в DB::expr() (чтобы он возвращал экземпляр Database_Expression, который не экранируется автоматически).

Чтобы экранировать значение вручную, используйте Database::quote() (не статично, вызовите его через объект базы данных, например, $db->quote($value)).

0 голосов
/ 27 октября 2018

Но! У Коханы проблема с кавычками (`). Это системный символ.

            elseif(preg_match('/\`/', $value))//if a backtick
            {
                return str_replace('\'', '', $value);//'value'=>value!!! 
            }

    return $this->escape($value);
...