2012-04-11 26 views
4

請不要認爲通過閱讀問題去否定問題。 ,因爲我搜查了很多,我知道無處不在這個問題已經被問了很多但我不知道我沒有得到適當的解決方案。Codeigniter轉義 - 從數據庫的unescape數據

我希望數據安全(從sql注入和xss)存儲在數據庫和從數據庫檢索。

我的CI配置設置:

$config['global_xss_filtering'] = FALSE; 

我的數據庫添加查詢:

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

我的數據庫視圖查詢:

$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 2012-04-12 04:50:58

0

活動記錄會自動轉義值。爲了顯示不帶引號的字符串,你可以使用字符串助手。

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

它在User's Guide

+0

並且不要忘記加載字符串幫手: '$ this-> load-> helper('string');' – Haywire 2012-04-11 14:44:31

+0

不工作... Ex。 我的值是:AA'BB「CC \ DD/EE'FF; GG〜HH in Add db-> escape is used。 in DB它顯示:'AA \'BB \」CC \\ DD/EE'FF; GG〜HH' 顯示:使用strip_quotes。 in Display它是:'AA'BB'CC \ DD/EE'FF; GG〜HH' – TechCare99 2012-04-21 12:19:36