如果下面的代碼行更好地用於確保我的代碼更安全,那該怎麼辦?我應該使用filter_var函數的settype函數嗎?settype()vs filter_var()
settype($number,'integer')
或
filter_var($number, FILTER_SANITIZE_NUMBER_INT);
感謝你
如果下面的代碼行更好地用於確保我的代碼更安全,那該怎麼辦?我應該使用filter_var函數的settype函數嗎?settype()vs filter_var()
settype($number,'integer')
或
filter_var($number, FILTER_SANITIZE_NUMBER_INT);
感謝你
由於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)
所以這真的取決於上下文。
或者只是用'(int)'將其轉換爲int。所有三個選項都會得到同樣的結果。 –
這真的取決於你想用'$ number'做什麼。 – Jocelyn