2012-04-11 7 views
4

質問を読んで質問を否定的にすると思わないでください。 私はたくさんの検索をしており、どこでもこの質問が多く尋ねられていることを知っていますが、私はこれを適切に解決していないことはわかりません。Codeigniterエスケープ - データベースからデータをエスケープする

DBに格納してDBから取得する際に、データを安全にしたい(SQLインジェクションとxssから)。

私のCIコンフィグ設定:

$config['global_xss_filtering'] = FALSE; 

私のDBは、クエリを追加:

$add_data['name'] = $this->db->escape($name); 
..... 
..... 
$this->db->insert($this->table, $add_data); 

私のDBビュークエリ:

$q =$this->db->select($this->fld); 
$q = $this->db->where("$this->cond"); 
$q = $this->db->order_by($this->sortid, $this->sortby); 
$q = $this->db->limit($this->limit,$this->offset); 
$ret=$q->get()->result_array(); 

私の問題がある:

DB値には一重引用符を使用しています。 DB内の$名= ABCはそれが の場合: 'ABC'

質問:

私は、私は引用符なしでそれらを表示することができますどのように引用されたデータを表示したい場合は。

プラス

どのように私は、データベース内の単一引用符を追加すること防ぐことができます。

答えて

2

CI insertを使用する場合、データをエスケープする必要はありません。アクティブなレコードは自動的に値をエスケープします。あなたの例では:

/* $add_data['name'] = $this->db->escape($name); - not need */ 
$add_data['name'] = $name; 
..... 
..... 
$this->db->insert($this->table, $add_data); 

CI Active Recordsをお読みください。すべての機能の説明があります。どちらもエスケープする必要はありません。

+0

$ this-> db-> escapeを追加しないと、スラッシュが追加されません。実際に必要なときに。 e.x. $ add_data ['name'] = X'Masと結婚します – TechCare99

0

アクティブなレコードは値を自動的にエスケープします。引用符をつけずに文字列を表示する場合は、文字列ヘルパーを使用できます。

$string="Joe's \"dinner\""; 
$string=strip_quotes($string); //results in "Joes dinner" 

その中のUser's Guide

+0

と文字列ヘルパーをロードすることを忘れてください: '$ this-> load-> helper( 'string');' – Haywire

+0

Not Working ... Ex。 私の値は:AA'BB "CC \ DD/EE'FF; GG〜HH db->エスケープを追加しました DBに表示されています: 'AA \' BB \" CC \\ DD/EE'FF; GG〜HH ' 表示中:strip_quotesが使用されます。 が表示されます: 'AA'BB "CC \ DD/EE'FF; GG〜HH' – TechCare99

関連する問題