2012-09-09 80 views
0

如果下面的代碼行更好地用於確保我的代碼更安全,那該怎麼辦?我應該使用filter_var函數的settype函數嗎?settype()vs filter_var()

settype($number,'integer') 

filter_var($number, FILTER_SANITIZE_NUMBER_INT); 

感謝你

+3

或者只是用'(int)'將其轉換爲int。所有三個選項都會得到同樣的結果。 –

+2

這真的取決於你想用'$ number'做什麼。 – Jocelyn

回答

2

由於documentation說,大約FILTER_SANITIZE_NUMBER_INT:除了數字

刪除所有的字符,加號和減號。

因此,如果您希望在SQL查詢中使用一個ID,我將使用正則表達式來檢查我只有數字/^[0-9]+$/。因爲FILTER_SANITIZE_NUMBER_INT將允許-12這在這種情況下是沒有意義的。

filter_var和settype之間的主要區別是,將一個字符串解析變量,並返回一個字符串,另一個將它轉換爲一個整數。

$string = "+12"; 
var_dump(filter_var($string, FILTER_SANITIZE_NUMBER_INT)); 
settype($string, "integer"); 
var_dump($string); 

輸出:

string(3) "+12" 
int(12) 

所以這真的取決於上下文。

-3

settype(int)filter_var更好。因爲filter_var有很多邏輯判斷。

+0

哥們我認爲你需要睡一覺 –

+1

你能詳細說明*很多邏輯判斷*嗎? – Tchoupi

+0

@ImranOmarBukhsh對不起? – Tchoupi