Codeigniter удаляет знаки «+» из моих входных данных формы (текстовые области).Мне нужно, чтобы они остались - PullRequest
0 голосов
/ 29 февраля 2012

Я пытаюсь собрать уравнения от моих пользователей, но моя установка CodeIgniter удаляет все знаки «+» / «плюс» / «знаки добавления» после отправки формы (this-> input-> post)('form_value') уже очищена перед передачей в модель).

Я исследовал xss_cleaning, input.php (в библиотеках) и не могу найти, где их удаляет установка по умолчанию (1.7.2)?Я изучал это некоторое время и не могу найти это.Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

2 голосов
/ 29 февраля 2012

Проблема решена! Я заметил, что форма отправляется через AJAX и использует метод POST. Проблема заключалась в том, что браузер переводил «+» в «» при передаче через URL. Решением было сначала закодировать весь текст перед отправкой через:

var newvalue = encodeURIComponent(value);

CI затем автоматически декодирует и вводит в базу данных как «+» через:

$this->input->post($value); 

При извлечении этого значения из базы данных дальнейшее форматирование (кодирование или декодирование) не требуется.

Спасибо за вашу помощь. Это действительно заставило меня задуматься об этом. Вы, ребята, великолепны!

A

0 голосов
/ 29 февраля 2012

Это могут быть следующие настройки:

  • Глобальная фильтрация XSS активируется в application/config/config.php:

    $config['global_xss_filtering'] = TRUE;
    
  • XSS-фильтрацияприменяется при вызове $this->input->post():

    $this->input->post('some_data', TRUE); // XSS filtering ON
    $this->input->post('some_data'); // XSS filtering OFF by default
    
  • Правила проверки формы включают фильтрацию XSS:

    $this->form_validation->set_rules('some_data', 'Some Data', 'xss_clean');
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...