CI — Очистка входных данных формы от кавычек

Я столкнулся с проблемой, когда при отправке символов, таких как одинарные кавычки (‘) или двойные кавычки («), и если я сохраняю значения после отправки формы (например, из-за сбоя проверки), я получаю значения формы, например’ а также "

Я пробовал много вещей, как —

  • доступ к значениям формы $this->input->post("field", true) вместо $_POST,
  • включение фильтрации XSS из конфигурации,
  • с помощью $this->security->xss_clean($data);

Но ничего не помогло.
Наконец, я пошел в system \ helpers \ form_helper.php и изменил функцию form_input в строке 177 следующим образом:

предыдущий : $defaults = array('type' => 'text', 'name' => (( ! is_array($data)) ? $data : ''), 'value' => $value);

После : $defaults = array('type' => 'text', 'name' => (( ! is_array($data)) ? $data : ''), 'value' => html_entity_decode($value, ENT_QUOTES, 'UTF-8'));

Это решило мою проблему без перерыва до сих пор.

Все, что я хочу знать, если это правильный путь для достижения цели?

0

Решение

Я не уверен, что проблема возникла у вас, но редактирование системного файла для ее исправления — не самая лучшая идея. Вам следует никогда измените что-нибудь в системной папке, правильный способ сделать это — расширить вспомогательный файл формы, создав файл application/helpers/MY_form_helper.php (используя свой собственный префикс, определенный в application/config/config.php) и внутри файла переопределите функцию, которую вы хотите изменить. Это должно выглядеть примерно так …

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

if ( ! function_exists('form_input'))
{
/**
* Text Input Field
*
* @param    mixed
* @param    string
* @param    string
* @return   string
*/
function form_input($data = '', $value = '', $extra = '')
{
$defaults = array(
'type' => 'text',
'name' => is_array($data) ? '' : $data,
'value' => html_entity_decode($value, ENT_QUOTES, 'UTF-8')
);
return '<input '._parse_form_attributes($data, $defaults).$extra." />\n";
}
}

/* End of file MY_form_helper.php */
/* Location: ./application/helpers/MY_form_helper.php */
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector