2012-01-02 64 views

回答

5

你會得到更好的服務,只是做的事:

$id = isset($_GET['id']) ? (int) $_GET['id'] : 0;

這樣就可以避免is_numeric功能的開銷。儘管這兩種方法都足以避免注入(只要你對數據做了某些事情,如果is_numeric返回FALSE)。如果所討論的$ _GET變量不存在,三元運算符還會確保您不會收到E_NOTICE。

+0

你能描述函數調用的開銷與三元運算符相比有多高? – KingCrunch 2012-01-02 21:11:14

+0

@KingCrunch:你不一定要使用這種方法。它不提供驗證輸入的機會。 – 2012-01-02 21:12:05

+0

@KingCrunch我知道'開銷'的爭論可能會引發宗教書呆子的戰爭,但我沒有看到如何避免一個不必要的函數調用永遠不會是壞事。 – rdlowrey 2012-01-02 21:13:22

3

您可以使用intvalfloatval

3

不,沒有。但是,請注意,例如is_numeric('0xaf5') == true,因此根據您想實現的目標可能還不夠。

相關問題