Я столкнулся с проблемой, когда при отправке символов, таких как одинарные кавычки (‘) или двойные кавычки («), и если я сохраняю значения после отправки формы (например, из-за сбоя проверки), я получаю значения формы, например’ а также "
Я пробовал много вещей, как —
$this->input->post("field", true)
вместо $_POST
,$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'));
Это решило мою проблему без перерыва до сих пор.
Все, что я хочу знать, если это правильный путь для достижения цели?
Я не уверен, что проблема возникла у вас, но редактирование системного файла для ее исправления — не самая лучшая идея. Вам следует никогда измените что-нибудь в системной папке, правильный способ сделать это — расширить вспомогательный файл формы, создав файл 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 */
Других решений пока нет …