Codeigniter 3 Не удалось получить доступ к сообщению об ошибке
У меня есть функция set_rules в Codeigniter 3
i проверить электронную почту пользователя:
$this->form_validation->set_rules('email', 'Email', 'required|trim|xss_clean|valid_email');
и когда я отправляю сообщение об ошибке:
Невозможно получить доступ к сообщению об ошибке, соответствующему имени вашего поля электронной почты.
Ответы
Ответ 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');