Чистый ввод HTML в Codeigniter - PullRequest
2 голосов
/ 09 июля 2010

Привет, ребята,

Я создавал приложение с использованием CodeIgniter и столкнулся с проблемой.У меня есть форма с текстовой областью, в которой пользователь помещает свой текст, используя простой редактор, работающий на jwysiwyg.jquery .Проблема заключается в том, что необходимо очистить этот ввод от мусорного кода (связать тот, который идет с вставкой непосредственно из Word).

Форма проверяется с помощью библиотеки form_validation из CodeIgniter, с этим правилом:

array(
 'field' => 'job[description]',
 'label' => 'Description',
 'rules' => 'trim|required|callback_clean_html'
),

Затем у меня есть метод clean_html, который просто делает:Проблема в том, что это просто игнорируется, и исходный текст вставляется в базу данных.Метод работает (я проверял).Я полагаю, это потому, что обратный вызов должен возвращать TRUE или FALSE, но тогда xss_clean не возвращает BOOL.Документация не сильно помогает.

Есть какие-нибудь мысли?

Заранее спасибо.

Ответы [ 5 ]

1 голос
/ 10 июля 2010

Я думаю, что обратные вызовы form_validation должны возвращать bool. Я считаю, что form_validation наиболее полезна, когда вам нужно отобразить сообщение об ошибке пользователю, как правило, для повторной отправки формы. Хотя функции подготовки могут быть удобными, они не должны быть там для проверки. Почему бы не передать отправленную строку через функцию strip_tags после отправки формы, но перед ее отправкой в ​​базу данных?

0 голосов
/ 21 марта 2012

Из того, что вы разместили, должно работать.И префикс callback_, и возврат верны.Методы проверки могут возвращать не-bools, которые заменят значение.Проверьте документацию form_validation, там явно сказано, что.

Так что ваша проблема должна быть в каком-то месте кода, который вы не опубликовали.

0 голосов
/ 15 июля 2010

xss_clean и другие функции проверки CI возвращают не-bool значения. Я только что проверил следующую функцию обратного вызова в CI версии 1.7.2:

function test_string_change($str)
{
    return "$str **";
}

Строка была успешно изменена с помощью callback_test_string_change. Я знаю, что были некоторые проблемы с функциями обратного вызова в 1.7.0, вы используете последнюю версию?

0 голосов
/ 10 июля 2010

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

`$string = filter_var($string, FILTER_SANITIZE_STRING);`

Это лишит HTML

В последнее время я тоже сталкивался с ситуациями, когда ввод полностью игнорировал установленные правила.

0 голосов
/ 09 июля 2010

Вы пытались удалить callback_ в правиле? Вы можете выполнять обычные функции PHP, такие как trim, поэтому это должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...