2013-06-05 40 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不应为零。 –