Ну, насколько я знаю, есть небольшой взлом, который вы можете сделать.
Вы переходите к входному классу (system / core / input.php) и меняете значение по умолчанию для параметра $ xss_clean.
Собственно, он установлен в FALSE, так что вы можете изменить его, передав TRUE в $ this-> input-> post () или get ().
Пример с post () (в строке 128 файла input.php), но вы также должны обратиться к get.
/**
* Fetch an item from the POST array
*
* @access public
* @param string
* @param bool
* @return string
*/
function post($index = NULL, $xss_clean = TRUE) // <-- Here I changed the default from FALSE to TRUE)
{
// Check if a field has been provided
if ($index === NULL AND ! empty($_POST))
{
$post = array();
// Loop through the full _POST array and return it
foreach (array_keys($_POST) as $key)
{
$post[$key] = $this->_fetch_from_array($_POST, $key, $xss_clean);
}
return $post;
}
return $this->_fetch_from_array($_POST, $index, $xss_clean);
}
Теперь вы отключаете глобальную фильтрацию (установите ее в FALSE). Теперь ваш ввод будет автоматически фильтроваться, если вы не укажете FALSE в качестве второго параметра вызова, например $this->input->post('title',FALSE).
В качестве альтернативы (вместо взлома ядра) вы можете расширить собственную библиотеку ввода, чтобы передать значение ИСТИНА вместо ЛОЖЬ, что-то вроде этого:
class MY_Input extends CI_Input {
function __construct()
{
parent::__construct();
}
//........
function get($index = NULL, $xss_clean = TRUE)
{
return parent::get($index, $xss_clean);
}
//...........
function post($index = NULL , $xss_clean = TRUE)
{
return parent::post($index, $xss_clean);
}
}
Он должен работать таким же образом, и вам не нужно будет взламывать файл core каждый раз, когда вы его изменяете.
Прочитайте расширение базовой страницы в руководстве для лучшей информации.