Подтвердить что ты не робот

Codeigniter 3 Не удалось получить доступ к сообщению об ошибке

У меня есть функция set_rules в Codeigniter 3

i проверить электронную почту пользователя:

$this->form_validation->set_rules('email', 'Email', 'required|trim|xss_clean|valid_email');

и когда я отправляю сообщение об ошибке:

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

4b9b3361

Ответ 1

Из codeigniter github:

В основном неизвестное правило об очистке XSS заключается в том, что оно должно быть применяется к выходу, в отличие от входных данных.

Мы совершили эту ошибку самостоятельно с помощью нашего автоматического и глобального XSS (см. предыдущий шаг о XSS выше), так что теперь в усилия, чтобы отговорить эту практику, мы также удаляем "xss_clean" из официально поддерживаемого списка правил проверки формы.

Поскольку библиотека проверки формы обычно проверяет входные данные, Правило "xss_clean" просто не принадлежит ему.

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

Ссылка: https://github.com/bcit-ci/CodeIgniter/blob/develop/user_guide_src/source/installation/upgrade_300.rst#step-13-check-for-usage-of-the-xss_clean-form-validation-rule

И если, несмотря на все, вам это действительно нужно, перейдите в application/config/autoload.php:

$autoload['helper'] = array('security');

Или перед проверкой формы

$this->load->helper('security');

Ответ 2

xss_clean больше не является частью проверки формы.

Альтернативой не является его использование, поскольку xss_clean выполняет санитацию и не проверяет.   xss_clean является частью помощника по безопасности. Если вам нужно это сделать, после проверки вы сделаете.

 $this->load->helper('security'); `
 $value = $this->input->post('email',TRUE); //where TRUE enables the xss filtering

Кроме того, вы можете включить глобальную фильтрацию xss в файле config.php

$config['global_xss_filtering'] = TRUE;

Ответ 3

Загрузите security Помощник на autoload.php

$autoload['helper'] = array('security');

Не нужно ничего делать.

Ответ 4

Другие ссылались на него, но никто не сказал лаконично, способ исправить эту ошибку состоит в том, чтобы удалить xxs_clean из вашего правила проверки. Я просто наткнулся на эту проблему сам, и благодаря намеченным здесь подсказкам удалось решить проблему.

Это:

 $this->form_validation->set_rules('email', 'Email', 'required|trim|xss_clean|valid_email');

Становится следующим:

 $this->form_validation->set_rules('email', 'Email', 'required|trim|valid_email');

Ответ 5

Глобальное переопределение правила будет расширять его с помощью специального сообщения следующим образом:

$this->form_validation->set_rules('email', 'Email', 'required|trim|xss_clean|valid_email',
        array('xss_clean' => 'Error Message: your xss is not clean.')
);

Ответ 6

Вы должны использовать.

$this->load->helper('security'); 

Также вы можете использовать приведенный ниже код в config/autoload.php, но я предпочитаю использовать вышеприведенный. Так как он сохраняет вес Codeigniter lite.

$autoload['helper'] = array('security');