0

如果以下几行更好地用于确保我的代码更安全。我应该使用 filter_var 函数的 settype 函数吗?

settype($number,'integer') 

或者

filter_var($number, FILTER_SANITIZE_NUMBER_INT);

感谢您

4

2 回答 2

2

正如文档所说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)

所以这真的取决于上下文。

于 2012-09-09T03:04:27.550 回答
-3

settype并且(int)filter_var. 因为filter_var有很多逻辑判断。

于 2012-09-09T02:49:24.980 回答