如果以下几行更好地用于确保我的代码更安全。我应该使用 filter_var 函数的 settype 函数吗?
settype($number,'integer')
或者
filter_var($number, FILTER_SANITIZE_NUMBER_INT);
感谢您
如果以下几行更好地用于确保我的代码更安全。我应该使用 filter_var 函数的 settype 函数吗?
settype($number,'integer')
或者
filter_var($number, FILTER_SANITIZE_NUMBER_INT);
感谢您
正如文档所说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)
所以这真的取决于上下文。
settype
并且(int)
比filter_var
. 因为filter_var
有很多逻辑判断。