2013-06-05 72 views
0

我正在寫一個控制器操作,它從一個窗體接受兩個輸入:一個現有的用戶ID和一個新的用戶標識。過濾輸入 - 是足夠的

兩者都應該是整數值。

爲了避免任何潛在的安全問題,僅僅檢查is_int就足夠了嗎?

即:

if (is_int($existingUserId)) { 

} 

這應該避免,我認爲任何問題 - 但我不是100%肯定

回答

2

您應該使用is_numeric而不是is_int

根據is_int documentationis_int('23') = bool(false)。此外,文檔說明:

要測試變量是數字還是數字字符串(例如表單輸入,始終是字符串),您必須使用is_numeric()。

+0

在大多數情況下,轉換爲int也不會對任何人造成傷害。 –

+0

@JordanDoyle轉換爲int將簡單地將非數字值轉換爲「0」,這可能會產生意想不到的副作用。我建議演員,但只有在執行數字檢查後。 – Vulcan

+0

那麼這將有助於發現空值和頑皮的字符串,並且在大多數情況下,MySQL中自動增量的id是1索引的,所以id不應爲零。 –