2012-02-28 6 views
0

私はユーザーから方程式を収集しようとしていますが、私のCodeIgniterインストールでは、フォームが提出された後に '+'/'+記号'/' input-> post( 'form_value')は既にモデルに渡される前に消去されています)。Codeigniterがフォームの入力(テキストエリア)から「+」記号を削除しています。私はそれらを維持する必要があります

私はxss_cleaning、input.php(ライブラリ内)を調べましたが、デフォルトのインストール(1.7.2)がそれらを削除している場所が見つかりませんでしたか?私はこれをしばらく研究しており、それを見つけることはできません。どんな助けでも大いに感謝します。

+0

いくつかのコードを挿入できますか?おそらくset_rulesまたは何か。 – Motive

+0

確かに問題はどこにルールがあるのか​​わからないのですか?私はInput.phpを見て、テストのためにconfig.phpでグローバルxssフィルタをオフにしました。これまでの行動の変化はありません。 – AshBrad

答えて

2

問題が解決します! フォームがAJAX経由で送信していて、POSTメソッドを使用していたことに気付きました。 この問題は、URL経由でブラウザが "+"を ""に変換しているという単純なものでした。 溶液は、第一前を経由して送信するすべてのテキストをエンコードすることであった。

var newvalue = encodeURIComponent(value); 
CIが自動的にデコードし、データベースに入る

「+」を介し:

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

からこの値を取得しますそれ以上のフォーマット(エンコーディングまたはデコーディング)は必要ありません。

ご協力いただきありがとうございます。本当に私はこれについてブレーンストーミングをしました。あなたは素晴らしいです!

0

これは、次の設定から来るかもしれない:

  • グローバルXSSフィルタリングがapplication/config/config.phpで活性化される:

    $this->input->post('some_data', TRUE); // XSS filtering ON 
    $this->input->post('some_data'); // XSS filtering OFF by default 
    
  • :あなたは $this->input->post()を呼び出したときに

    $config['global_xss_filtering'] = TRUE; 
    
  • XSSフィルタリングが適用されます

  • フォーム検証規則t骨壷XSSはONフィルタリング:

    $this->form_validation->set_rules('some_data', 'Some Data', 'xss_clean'); 
    
+0

global_xss_filteringをfalseにトグルしてテストしましたが、まだ運がありません。 "+"典型的な文字はxssのフィルタリングによって削除されていますか?ありがとう、A – AshBrad

+0

'var_dump($ this-> input-> post())とは何ですか? 'var_dump($ _ POST)'はどうでしょうか? –

+0

は、文字列マイナス+ - > eg - submitted - A + B + C +を提供します。に変わります:ABC; – AshBrad

関連する問題