2012-01-02 34 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,因此根据您想实现的目标可能还不够。

相关问题