2014-12-30 16 views
0

我遇到了如果我提交單引號(')或雙引號(「)等字符並且在提交表單後仍保留這些值的問題(由於驗證失敗,例如),我正表單值等'和"CI - 將表單輸入從報價中消毒

我嘗試了很多東西等 -

  • 訪問表單值由$this->input->post("field", true)代替$_POST
  • 從配置啓用XSS濾波,
  • 使用$this->security->xss_clean($data);

但沒有任何幫助。 最後,我去系統\傭工\ form_helper.php和線177變更後的功能form_input如下 -

上一頁$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'));

這解決了我的問題目前爲止沒有任何突破。

我想知道這是否是正確的服務方式?

回答

1

我不是很確定你遇到的問題,但編輯系統文件來修復它並不是一個好主意。你應該從來沒有改變系統文件夾中的任何東西,正確的方式來進行更改將通過創建文件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 */