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

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

я проверяю адрес электронной почты пользователя:

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

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

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

Solutions Collecting From Web of "Codeigniter 3 Не удалось получить доступ к сообщению об ошибке"

Из codeigniter github:

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

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

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

Если вам действительно необходимо применить это правило, теперь вы также должны загрузить Security Helper , который содержит 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- правило

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

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

Или, прежде чем ваша форма проверки

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

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;

Другие ссылались на него, но никто не сказал коротко, способ исправить эту ошибку состоит в том, чтобы удалить 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'); 

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

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

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

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

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

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

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

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

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